传输层TCP/UDP协议

  1. 可靠的TCP协议(传输层)

1)  TCP封包结构如下图:

各字段的含义为:

封包序号:记录每个封包的序号,当TCP封包大于IP封包的长度时,TCP封包就需要拆分成更小的包,来下发给网络层,通过该字段可以让接收端重新将TCP数据组合起来。

回应序号:回传给客户端的响应码,当客户端收到这个确认码时,就能够确定之前传递的封包已经被正确的收下了。

资料补偿:由于Options字段是任意的,为了确认整个封包的大小,就用这个字段来说明整个封包区段的起始位置。

保留:保留字段,还未被使用。

控制标志码:用来说明联机的状态,以让接收端了解这个封包的主要动作,这个字段共六位,代表六个句柄,若为1则表示启动,每位含义分别为:

URG(Urgent):若为1表示该封包为紧急封包,接收端应该紧急处理,且Urgen Pointer字段也会被启用。

ACK(Acknowledge):若为1表示这个封包为响应封包

PSH(Push function):若为1,代表要求对方立即传送缓冲区内的其他对应封包,而无需等待缓冲区满了才送。

RST(Reset):若为1,表示联机会马上结束,而无需等待终止确认手续。也就是说,这是个强制结束的联机,且发送端已断线。

SYN(Synchronous):若为1,表示发送端希望双方建立同步处理,也就是要求建立联机。通常带有SYN标识的封包表示主动要连接到对方的意思。

FIN(Finish):若为1,表示传送结束,所以通知对方数据传毕,是否同意断线,只是发送者还在等待对方的响应而已。

Window(滑动窗口):主要用来控制封包的流量的,可以告知对方目前本身有的缓冲器容量(Receive Buffer)还可以接受封包。当Window=0时,代表缓冲器已经满额,所以应该暂停传输数据。Window的单位是Bytes。

确认检查码:当数据有发送端送出前,会进行一个检验的动作,并将该动作的检验值标注在这个字段上;而接受者收到这个封包之后,会再次对封包进行验证,并且比对原发送的Checksum值是否相符,如果相符就接受,若不符就会假设该封包已经损毁,进而要求对方重新发送。

紧急资料:告知紧急数据所在的位置。

任意选项:表示接收端可以接收的最大数据区段容量,若此字段不使用,表示可以使用任意数据区段的大小。这个字段较少使用。

补足字段:将表头长度补齐为固定的长度。

2)  端口号的最大值为65535(2的16次方减1),端口号小于1024的端口只用root身份才能启动对应的服务,因此叫做特权端口。常用的端口与服务如下:

20:FTP-data,文件传输协议所使用的主动数据传输端口。

21:FTP,文件传输协议的命令通道

22:ssh,较为安全的远程联机服务器

23:Telnet,早期的远程机器服务软件

25:SMTP,简单邮件传递协议,用在作为mail server的端口

53:DNS,用在作为域名解析的服务器端口

80:www服务器

110:POP3,邮件收信协议

443:https,有安全加密机制的www服务器

3)  TCP三次握手,如下图所示:

过程详解:

a)  A封包发起,当客户端想要对服务器端联机时,就必须要送出一个要求联机的封包,此时客户端必须随机取用一个大于1024以上的端口来作为程序沟通接口。然后再TCP的表头当中,必须要带有SYN的主动联机(SYN=1),并且记下发送出联机封包给服务器端的序号(sequence number=10001)

b)  B:封包接受与确认封包传送,当服务器接到这个封包,并且确定要接受这个封包后,就会开始制作一个同时带有SYN=1,ACK=2的封包其中那个Acknowledge的号码是要给client端确认用的,所以该数字会比(a)里面的sequence number多一号(ack=10001+1=10002),那我们服务器也必须要确认客户端确实可以接收我们的封包才行,所以会发出一个Sequence(seq=20001),并且开始等待客户端给我们服务器的响应。

c)  C:会送确认包当客户端收到来自服务端的ACK数字后(10002)就能确认之前那个要求封包被正确的收受了,接下来如果客户端也同意羽服务端建立联机时,就会再次的发送一个确认封包(ACK=1)给服务器,亦即是Acknowledge=20001+1=2002.

d)  D:取得最后的确认,若一切都顺利,在服务器端接收到带有ACK=1且ack=20002序号封包后,就能够建立起这次的联机了。

2.非连接的UDP协议

1)  UDP(User Datagram Protocol,用户数据流协议),非面向连接的协议,即在UDP的传输过程中,接受端在接受到封包之后,不会响应封包(ACK)给发送端,所以封包并没有像TCP封包有较为严格的检查机制。

2)  UDP封包结构图为:

3)  UDP数据传输特点:不可靠,但速度快,多用于实时性要求较高,但正确率不是很高的数据传输方式,如视频传输。

3.网络防火墙与OSI七层协议

1)  防火墙的原理:防火墙软件对封包的表头进行分析,并且设定分析规则,当发现某些特定的IP,特定的端口或者特定的封包信息(SYN/ACK等),就将该封包丢弃,这就是防火墙的原理。

2)  OSI七层中,每层抵挡的数据有:

第二层:可以针对来源与目标的MAC进行抵挡

第三层:主要针对来源与目标的IP,以及ICMP的类别(type)进行抵挡

第四层:针对TCP,UDP的端口进行抵挡,也可以针对TCP的状态(code)来进行抵挡。

时间: 2024-12-11 18:15:17

传输层TCP/UDP协议的相关文章

传输层:UDP协议

传输层:UDP 协议 一.传输层协议 从之前介绍的网络层协议来看,通信的两端是两台主机,IP 数据报首部就标明了这两台主机的 IP 地址.但是从传输层来看,是发送方主机中的一个进程与接收方主机中的一个进程在交换数据,因此,严格地讲,通信双方不是主机,而是主机中的进程.主机中常常有多个应用进程同时在与外部通信(比如你的浏览器和 QQ 在同时运行),下图中,A 主机的 AP1 进程在于 B 主机的 AP3 进程通信,同时主机 A 的 AP2 进程也在与 B 主机的 AP4 进程通信.两个主机的传输层

传输层 TCP UDP

传输层 TCP UDP TCP:ip提供点到点的连接,通过ip可以找到目标主机,TCP 传输控制协议 提供可靠的面向连接的端到端的协议(确认端口.提供服务类型)(传输效率低) DUP:用户数据报协议,不可靠的 非面向连接的协议.(传输效率高) TCP封装格式 4.TCP的三次握手=建立连接. 四次断开 =结束通信发送完成之后断开连接=四次断开TCP计时器: 重传计时器--为了控制丢失的数据段 坚持计时器--为了防止零窗口死锁(信息不对成,双方都在等待) 保活计时器--防止两个TCP连接长时间的空

Linux内核--网络栈实现分析(五)--传输层之UDP协议(上)

本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明出处http://blog.csdn.net/yming0221/article/details/7532512 更多请看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html 作者:闫明 注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析.”(下)“表示分析是从上向下分析. 这里看看数据包从IP层是如何

传输层:UDP 协议

一.传输层协议 从之前介绍的网络层协议来看,通信的两端是两台主机,IP 数据报首部就标明了这两台主机的 IP 地址.但是从传输层来看,是发送方主机中的一个进程与接收方主机中的一个进程在交换数据,因此,严格地讲,通信双方不是主机,而是主机中的进程. 主机中常常有多个应用进程同时在与外部通信(比如你的浏览器和 QQ 在同时运行),下图中,A 主机的 AP1 进程在与 B 主机的 AP3 进程通信,同时主机 A 的 AP2 进程也在与 B 主机的 AP4 进程通信. 两个主机的传输层之间有一个灰色双向

实验:传输层:UDP协议 学习笔记

一.传输层协议 从之前介绍的网络层协议来看,通信的两端是两台主机,IP数据报首部就标明了这两台主机的IP地址.但是从传输层来看,是发送方主机中的一个进程与接收方主机中的一个进程在交换数据,因此,严格地讲,通信双方不是主机,而是主机中的进程. 主机中常常有多个应用进程同时在与外部通信(比如你的浏览器和QQ在同时运行),下图中,A主机的AP1进程在于B主机的AP3进程通信,同时主机A的AP2进程也在与B主机的AP4进程通信. 两个主机的传输层之间有一个灰色双向箭头,写着“传输层提供应用进程间的逻辑通

笔记 传输层TCP/UDP

OSI 7 层 1 - 物理层 2 - 数据链路层 3 - 网络层 编址和路由 4 - 传输层 提供端到端的数据连接(端,就是端口的端) TCP UDP 5 - 会话层(系统内部实现机制,数据包中无法体现出来) 6 - 表示层(系统内部实现机制,数据包中无法体现出来) 7 - 应用层 ================================================== seq: sequence number , 序列号: acknowledge :确定号: mask : 掩码:

Linux内核--网络栈实现分析(九)--传输层之UDP协议(下)

本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7549340 更多请查看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html 作者:闫明 注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析.”(下)“表示分析是从上向下分析. 上篇分析了应用层经过BSD s

第29篇ip地址,mac地址 IPV4 IPV6 TCP UDP协议

回顾 2018-12-31 或者 2018.12.31 或者 2018*12*31 的正则表达式: [1-9]\d{3}(?P<sep>.)(1[12]|0?[1-9])(?P=sep)([12]\d|3[01]|0?[1-9])内容总览: ip地址 mac地址 IPV4 IPV6 TCP UDP协议 同一台机器的两个程序通讯-->文件 两台机器的两个程序之间通讯 -->网络 mac 每一台计算机的网卡 上面会有一个mac地址,也就是相当于改计算机在网络上的唯一身份表示 xx-xx

异常处理与网络基础中的tcp,udp协议

# 异常处理: # 什么是异常?异常和错误的区别 # Error 语法错误 比较明显的错误 在编译代码阶段就能检测出来 # Iteration 异常 在执行代码的过程中引发的异常 # 异常发生之后的效果 # 一旦在程序中发生异常,程序就不再继续执行了 # try: # # name # [][3] # except NameError: # print("请设置好变量!!") # except IndexError: #分支异常处理 # print('请认真!!') # # excep