Loading

TCP详解

 一 、TCP是如何利用IP的:

  • IP:无连接,不可靠
  • TCP将应用程序的传输数据分割成合适的数据块
  • 定时器
  • 延迟确认
  • 检验和:CRC校验
  • 流量控制:防止缓存区用完

 

二、 TCP首部

头部20个字节(IP也是20字节的首部)

socket: IP地址 +  端口号(插口)

socket pair: 自己IP地址 + 对方端口号  + 对方IP地址 + 对方端口号

解释:https://www.cnblogs.com/fantastic123/p/8968132.html

 

 

三、TCP的状态变迁

 s: server  c: client

三个部分:

建立连接、连接、断开连接

 

1.三次握手

目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”

 

clinet 发送: SYN = 1, ACK = 0 , 序列号为M(随机)

server发送:SYN = 1 , ACK = 1 ,序列号为N(随机),确定号为M+1

client 发送: ACK = 1 ,确定号为N+1

确定号有效,则有ACK一直为1

 2.TCP连接终止过程——四次挥手

 

因为TCP是全双工的 ,所以双方必须都关闭才可以,一方为主动,一方为被动

client:FIN = 1, 序列号M

server:ACK=1, 确定号M+1

server:  FIN  = 1, 序列号为N

client:  ACK = 1, 确定号N+1

 

 3.TCP通信过程及状态转换

 

 

 

四、TCP内部使用的定时器

1.重传定时器(接收方没有确认,也没有回复)

2.坚持定时器persist(window size,确定窗口还有没有能接收的空间  )

3.保活定时器keepalive(一直保存连接,可以在应用程序中发送消息代替)

4.2MSL定时器(TIME_WAIT)(本地socket无法使用,是本次连接的包彻底消失,不影响下一次的连接)

 

posted @ 2019-05-18 10:38  ZHGQCN  阅读(251)  评论(0编辑  收藏  举报