互联网协议之TCP协议

TCP/IP互联网协议


一、TCP协议

概述

TCP全名是(Transmission Control Protocol 传输层控制协议),是一个可以提供可靠的、支持全双工、连接导向的协议,因此在客户端和服务端之间传输数据的时候,是必须先建立一个连接的。

TCP的特点

连接:

  1. 是虚拟抽象的概念
  2. 能让两个通信的程序间确保彼此都在线
  3. 加快响应请求速度
  4. 连接也被称之为会话(session)
  5. 使得通信更稳定更安全
  6. 消耗更多资源
    总结:连接不是一个物理概念,而是通过传输双方的约定加上程序手段去形成的一个抽象的概念,连接会让传输的双方更加的资源倾斜,从而保证连接的通畅,连接让双方的传输更加稳定安全,但是连接消耗更多的资源,比如说每一个请求都要有响应。还有一部分是不适用于连接导向这种协议的,比如说视频播放,通常视频播放不在TCP/IP协议上

全双工:

  • 单工:任何时刻数据只能单向发送
  • 半双工:允许数据在两个方向上传输,在某一时刻,只能存在一个方向数据,只允许数据在一个方向上传输,其实一条线路就可以实现半双工。线路多只是增加传输速度
  • 全双工:任何时刻都能双向发送数据,至少需要两条线路

可靠性:是指数据保证无损传输

  • 数据在网络间传输是无序的,采用的封包交换的技术,接收方有一种算法将无序的数据恢复原有的状态
  • 如果发送方同时要把消息发送给多个接受方,这种情况称之为多播,在这种情况下对数据的可靠性要求每个接收方都无损的收到副本。需要分布式环境。多播有一种情况是强可靠性,强可靠性就是只要一个消息传输到了任何一个接收者,那就所有的接收者都要接收到这个消息,要么所有接收者都拒收这个消息,分布式的一致性,只不过没有分布式的一致性要求那么高,只是传输的无损

TCP协议的工作过程:

  • 建立连接的过程(三次握手)在这里插入图片描述

  • 断开连接的过程(四次挥手)在这里插入图片描述
    比建立连接多一次的原因是服务端发送ACK和FIN时是不能一起打包的

  • 传输数据
    3.1. 报文拆分:拿到应用层数据,进行拆分,拆分成多个数据块,称之为TCP段,根据封包交换在网络中存在一定的并行线路,拆分之后就可以复用这些线路进行传输。数据也不要拆得太小,拆分数据是挺消耗CPU资源的,需要CPU频繁的内存操作。TCP也只是对数据进行一个初步的拆分,还有更细粒度的拆分会交给网卡,网卡是硬件设备,不消耗内存
    3.1.1 传输数据-顺序保证在这里插入图片描述
    问题:tcp段是非常多的,不能一次把所有的排序都能完成,只能局限在某一个部分进行排序
    解决方案:时间窗口排序,只排序这这一个时间段内的数据,如果排序时发现数据不完整,会直接抛弃这个时间窗口,要求发送方重发
    3.1.2 TCP序号:发送序号(Seq)、接受序号(Ack),一个端的发送序号是另一个端的接收序号
    在这里插入图片描述

    3.2. 增加TCP头

    TCP头:TCP报文段 = TCP头部 + TCP段数据

    • 源端口:描述发送方机器上的应用
    • 目标端口:描述接收方服务器上的应用
    • 发送序号(Seq)/接受序号(Ack):32位字节,最大到40亿,就能支持很长时间的传输

    3.3. 数据重组
    未完待续

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值