TCP协议笔记

 1.0TCP协议头部格式

 源/目端口:表示数据从哪个应用程序发送,发送到哪个应用程序去(16bit/2B)


32位序列号:发送的数据按照一个字节一个编号存放进去,用来标识这是第几个报文(seq)每一个报文都要有


32位确认序列号:用于给对方的响应,值为收到TCP报文段的序号值加1(有数据要加上数据)【表示当前的应答报文针对的是哪个消息进行的确认应答 (Ackeq)】两种含义一:提示我下一个想要收到的报文序列号,二:我已经收到的报文。(字节流)


4位TCP报头长度---数据偏移(数据包文大小):表示TCP头部有4个字节(32位),所以TCP头部最大长度为15*4=60

6位标志位

URG:紧急指针是否有效
ACK:确认位,当该标记位置为1时,确认序列号有意义
PSH:提示接收端应用程序立刻从TCP缓冲区把数据读走
RST:对方要求重新建立连接,把携带RST标识的称为复位报文段
SYN:同步位,是TCP三次握手建立通道的标记
FIN:通知对方,要关闭连接了,把携带FIN标识的称为结束报文

16位窗口大小:进行流量窗口控制

16位校验和:检验数据是否一致

16位紧急指针(与URG结合使用):标识哪部分数据是紧急数据

TCP分段:因为IP分段后,TCP协议无法保证数据可靠性传输;故而使用TCP协议封装的文件不能IP分片,但是MTU规定了最大传输字节,所以要进行TCP分段

    MSS---最大传输段===MTU-IP头部-TCP头部

1.1可靠性
 确认机应答制
向对方发送一个数据报,对方要返回一个确认应答的数据报 实现的方式:序号和确认序号保证了响应应答针对的是哪一条消息的应 答

 超时重传机制
没有收到确认应答的数据报文,就需要发送端重新发送 

第一种:发送数据时候就已经发生了丢包,这个时候就要重新发送数据报文

 第二种:也可能是因为ACK丢包了,这种情况,服务端可能会接收到许多重复的数据,TCP内部有去重操作,接收的数据会放在操作系统内核的接收缓冲区中,接收缓冲区可以是一个内存空间,视为是一个阻塞队列,对于收到的数据,TCP会根据序号检查这个数据是不是在缓冲区中已经存在,如果存在则丢弃,如果不存在则放进去

排序机制
传输数据段时,被分为多个报文,从不同路径传输,最终达到目的地的顺序被打乱,需要根据序列号字段进行重新排序。

流控机制(滑动窗口机制)
接收端主机处理数据的速度有限,如果发送端发送数据太快,导致接收端缓冲区被填满,这时,发送端继续发送数据的话就会造成丢包,继而引起丢包重传等一些列连锁反应,因此TCP协议根据接收端接收数据的能力,来决定发送端发送数据的速度,这个机制就叫作流量控制 

接收端将自己剩余缓冲区大小存入TCP头部中的“16位窗口大小”字段 ,通过ACK通知发送端
窗口大小越大,说明网络吞吐量越高
发送端根据接收到这个窗口的大小,控制自己的发送速度
如果接收缓冲区满了,就会将窗口设置为0,这时,发送端不在发送数据,而是定期的发送一个窗口探测报文(只是为了知道窗口的大小),让接收端将窗口大小告诉发送端
 

面向连接(三次握手,四次挥手)

名词解释:
三次握手:

1.CLOSED:不在连接状态。(客户端原本所处的状态)
2.LISTEN:等待从任何远端TCP 和端口的连接请求。(服务器原本所处的状态)
3.SYN_SENT:发送完一个连接请求后等待一个匹配的连接请求。(客户端在第一次握手后所处的状态)
4.SYN_RECEIVED:发送连接请求并且接收到匹配的连接请求以后等待连接请求确认。(服务器在第二次握手后所处的状态)
5.ESTABLISHED:表示一个打开的连接,接收到的数据可以被投递给用户。连接的数据传输阶段的正常状态。(客户端和服务器在第三次握手成功后所处的状态)
四次挥手:
1.FIN_WAIT_1:等待远端TCP 的连接终止请求,或者等待之前发送的连接终止请求的确认。(客户端在第一次挥手后所处的状态)
2.CLOSE_WAIT:等待本地用户的连接终止请求。(服务器在第二次挥手后所处的状态)
3.FIN_WAIT_2:等待远端TCP 的连接终止请求。(客户端在第二次挥后前所处的状态)
4.LAST_ACK:等待先前发送给远端TCP 的连接终止请求的确认,包括它字节的连接终止请求的确认。(服务器在第三次挥手后所处的状态)
5.TIME_WAIT:等待足够的时间过去以确保远端TCP 接收到它的连接终止请求的确认。(客户端在第四次挥后前所处的状态)
 6.CLOSING:等待远端TCP 的连接终止请求确认。
 

下面以图的形式方便理解:

三次握手

四次挥手 

整个过程 

MSL----120S ,一个数据包在网络传递的最大时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值