- 1.TCP协议是面向连接的协议,而UDP是无连接的协议
- 2.TCP协议的传输时可靠的,而UDP协议的传输“尽力而为”
- 3.TCP协议可以实现流控,而UDP不行
- 4.TCP协议可以实现分段,而UDP不行
- 5.TCP传输速度较慢,占用资源较大;UDP传输速度较快,占用资源小
TCP协议
序号和确认序号:32位
TCP协议 — 是可变长头部
URG — 紧急标记位 紧急,优先处理信息,紧急标志位置1后,随之激活紧急指针(16位),指示紧急数据所在的位置
ACK — 确认标记位 作确认的数据包,确认序号(32位)被激活
PSH — TCP存在缓冲区域,缓冲便于排序。PSH置1后免于缓冲,某个数据段直接被推送给进程
RST — 强制断开
SYN — 请求标记位 请求建立连接
FIN — 结束标志位
校验和 — 确保数据的完整性
传输层的校验是伪头部校验 — 除了校验本层头部及数据部分内容外,还会将网络层的部分数据一起进行校验 — 12字节 — 32源IP地址,32目标IP地址,8位保留,8位协议号
TCP的三次握手
TCP的四次挥手
三次握手
:
- client:请求连接
- server:同意并请求连接
- client:同意
四次挥手
- client:请求关闭
- server:同意
server可能在继续发未发完的数据,也可能没有
- server:请求关闭
- client:同意
两者差别
- 三次握手:第二次握手时,服务器端同意客户端的连接请求的同时,进行服务器端的连接请求
-
四次挥手:第二次握手时,服务器端
仅
同意客户端的关闭请求;在第三次握手时,才进行服务器端的关闭请求
TCP协议保证传输可靠性的机制—确认,重传,排序,流控—滑动窗口机制
-
确认
-
重传
:如果发出报文后的一定时间内未收到接收方的确认,发送方就会进行重传- 未收到确认的可能性:a.发送的数据包丢了;b.确认的ACK丢了
- 接收方收到重复的数据时(用到序列号),将其丢掉并重新发送ACK
-
排序
:TCP将每个字节的数据都进行了编号,即为序列号- 序列号的作用:a.保证可靠性(当接收的数据少了某个序号的数据时能马上知道;b.保证数据的按序到达;c.提高效率,可实现多次发送,一次确认;d.去除重复数据
-
流控
:如果发送端发送数据的速度过快,导致接收端的缓冲区满了,而发送端继续发送,会造成丢包,进而造成丢包重传等一系列连锁反应;因此TCP可以根据接收端的处理能力来调整发送端的的发送速度,这就叫流量控制 -
滑动窗口机制
网络层 — 封装IP地址
- 4位版本:IP协议的版本 IPV4和IPV6
- 8位服务类型:作标记来获得相应服务
- 16位总长度:头部内容加数据内容的总长度
- 16位标识,3位标志,13位片偏移:IP的分片
- 8位生存时间TTL:Time To Life 数据包每经过一次路由器的转发,TTL值将会减1,当一个数据包中的TTL值为0时,路由器将不再转发该数据包,将直接把他丢弃
协议号
TCP — 6
UDP — 17
ICMP — 1
MTU — 最大传输单元 — 1500字节 数据在传输给数据链路层之前,网络层有义务保证数值不能超过1500
MSS — 最大段长度 — 1460字节 — 这个值需要在TCP连接的三次握手中前两次SYN包中进行协商,如果双方携带的MSS值不同,则以小的为准