以下均为二层传输层

TCP功能

1、切段 加快传输速率

2、收到确认 保障可靠性

3、重排序 切断后可以同时传输,运送到目的地重新排序

4、丢失重传 切断传输可能丢失,可以重传某个切断数据

5、数据去重 切断传输多出来的,可以去除

6、数据校验和 目的设备会与一个"验证码"匹配,匹配成功数据传输完成

UDP功能

发送数据报 不可靠 无连接的协议 由于udp传输模型很简单,不需要tcp握手

广泛用于实时视频、语音、实时游戏

TCP、UDP都在二层传输层上

TCP报文:

源 目

Seq:序列号,排序中使用此字段

ACK-N:确认序列号(32bit)

Header length(4):头部长度 Reserved(6):保留字段,6bit(000000),用来占位子用的 Control bit(6):控制位 Window(16): 窗口字段,用来调节TCP传输速率

Checksum(16):校验和 Urgent(16):与URG控制位配合使用,优先处理该字段xxx字节

Options:可变字段,一般普通的TCP报文都是20字节,这里可以添加一些高级功能,会导致TCP报文长度变化

固定长度20字节

TCP的控制位(Control bits 6bit):

功能关闭:0,功能打开:1

1、URG:紧急指针有效标识,与Urgent字段匹配使用,0该字段无效,1有效,优先处理前xxx个字节

2、ACK:与ACK-N字段匹配使用,通常都是置位(1)

3、PSH:与URG类似,优先(加急)处理一整个数据段

4、RST:重建连接标识,告诉对端设备希望重新建立TCP连接

5、SYN:用于发起TCP连接,初次建立连接都是置位(1)

6、FIN:用于断开TCP连接

UDP报文比较简单

TCP三次握手:

第一次握手:seq随机,ack-n确认序列号没有,syn第一次发起连接为置位(1),ack控制位因ack-n确认序列号没有,也为0

第二次握手:对端响应,seq随机,ack-n确认序列号为上一次请求序列号+1,syn对端第一次发起连接为置位(1),ack控制位因ack-n有东西了,所以为1

第三次握手:发起请求端seq是 响应端的ack-n+1,ack-n是上一次的seq+1再+1,syn不是第一次发起了为0,ack是1

syn己端发起对端的第一次连接为1,其他都为0

三次握手后进入正常传输工作流程:

正常传输中不需要seq+1了,要加上每次传输的数据data

四次挥手: