传输层:确立了主机应用程序之间端到端的连通性
传输层主要协议:TCP,UDP
一.TCP协议(传输控制协议 Transmission Control Protocol )
特点:面向连接,提供可靠传输服务(先建立通道,传输数据,断开连接)
TCP端口号:区分不同的网络服务(TCP允许一个主机运行同时运行多个运用程序)
表示:IPV4中16bit表示,范围0—65535
①固定端口(熟知端口):范围0—1023,由Internet端口号分配机构统一分配管理
②动态端口(短暂端口):范围一般为1024—5000(5000以上不常用),由客户端在保证唯一性情况下自行分配
TCP Header格式
TCP 头:
Source Port(源端口号):16bit
Destination Port(目的端口号):16bit
Sequence Number(序列号):32bit,标识从发送端发出的不同的TCP数据段的序号,若传输过程中发送顺序变化,接收端可通过序列号重排列
Acknowledge Number(确认序列号):32bit,接收到的序列号+1,即准备接收的序列号
Header Length(头长度):4bit, 范围20B—60B,可变长度选项决定其大小
Resv.(保留位):6bit,以防以后补充
Sign(标志):6bit,共6个标志
(1)URG:标识紧急指针是否有效
(2)ACK:标识确认序列号是否有效
(3)PSH:若该位置1,立刻将数据从缓存区读走
(4)RST:置1,重新建立TCP连接
(5)SYN:请求建立连接
(6)FIN:通知对端连接即将中断
Window(窗口):16bit,进行流量控制,通知接收端还可发送数据的字节数,接收方可据此值改变其发送窗口大小(最大65535B)
Checksum(校验和):16bit,差错检验
Urgent Pointer(紧急数据指针):16bit,当URG为1,表示有紧急数据,紧急数据位于段开始,紧急数据指针指向紧挨着紧急数据后的第一个字节
Options(选项):32bit,包含初步建立连接时,可接收端的最大尺寸和允许16bit代替32bit的窗口字段
Padding(填充):选项字段不够32bit时,用若干0填充
TCP建立连接:三次握手
(1)主机A发标识为SYN的报文,请求建立连接(seq=a,SYN)
(2)服务器B收到后发标识SYN请求建立连接,ACK对主机A的报文确认(seq=b,ack=a+1,SYN,ACK
(3)主机A发标识ACK对服务器B的报文确认(seq=a+1,ack=b+1,ACK
TCP数据传输:
(1)主机A发数据段N(seq=本段序列号-下一段序列号)
(2)服务器B发确认号,表示前面发送的数据包已收到(ACK=主机A发的最后一个数据段的seq+1)
(3)主机A发送回复确认报文(seq=确认号-本段序列号)
(4)若服务器B没收到回复确认报文,会再次以之前确认序列号发送确认报文至主机A收到,且重传确认报文后的数据段
TCP流量控制:滑动窗口控制
将数据存入缓存区,等缓存区满则一起发送,若数据有溢出,溢出的数据段整个丢弃。
接收端发送确认报文,包括已收到的数据大小和剩余缓存区大小
TCP连接释放:四次挥手
(1)主机A发送标识FIN和ACK(seq=a//自己序列号,ack=b//服务器B序列号)
(2)服务器A发送ACK(seq=b,ack=a+1)
(3)服务器发送标识FIN和ACK(seq=b,ack=a+1)
(4)主机A发送ACK(seq=a+1,ack=b+1)
二.UDP协议(用户数据包协议 User Dtagrm Protocol)
特点:面向无连接,传输不可靠,简单(不建立连接,想传就传)
UDP Header格式
8个字节,无确认机制
UDP传输过程:
不提供序列,由应用程序据需要自己提供报文到达确认,排序,流量控制等功能
不提供重传机制,占用资源小,处理率高,实时性好,适用于语音,视频等功能