5.3 TCP原理

1. TCP套接字中的IO缓冲


  IO缓冲在每个TCP套接字中单独存在;

  IO缓冲在创建套接字时自动生成;

  即使关闭套接字也会继续传递输出缓冲中的遗留数据;

  关闭套机子将丢失输入缓冲中的数据。


假如客户端输入缓冲只有50字节,而服务器端传输了100字节,会有这问题吗?

不会,TCP套接字的数据收发是没有边界的,不会发送类似问题。TCP有滑动窗口协议,数据收发时不会因为缓冲溢出而丢失数据。


2.套接字连接


三次握手:Three-way handshaking

a.主机A --> 主机B:SYN:SEQ:1000,ACK:-

  SYN(Synchronization),传递的数据包序号为1000,ACK为空。如果对方接收无误,ACK要+1.

b.主机B --> 主机A:SYN+ACK:SEQ:2000,ACK:1001

  SEQ:主机B的序列号,ACK1001表示接收无误,请求传递SEQ1001数据包。

c.主机A --> 主机B:ACK:SEQ1001,ACK2001.

 

3. 交换数据

主机A分两次向主机B发送200字节数据。 主机A第一个数据包序列号1200,主机B收到后,返回的ACK=SEQ号+传递的字节数+1


假如传输过程中发生丢包,TCP会启动重传。



3.断开套接字

四次握手:Four-way handshaking


a.FIN:SEQ5000,ACK-

b.ACK:SEQ7500,ACK5001,FIN的ACK指令

c.FIN:SEQ7501,ACK5001;ACK5001是因为接收ACK消息后未接收数据而重传的。

d.ACK:SEQ5001,ACK7502




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值