一文带你掌握TCP/IP协议

协议的由来

在互联网建立之初,各大厂商百花争鸣,都想抢占先机,夺得市场,因此,各家各自为政,市场上涌现出一大批不同规则的通信设备,随着市场规模的不断扩大,为了方便管理,使异构计算机间实现互联,国际标准化组织IOS提出计算机网络统一协议,OSI(开放式系统互联通信)参考模型.

OSI七层模型与TCP/IP协议簇

OSI七层模型

  • 应用层

    应用层是OSI参考模型中最高一层,用户想要在网络发送数据时,必须先经过应用层处理,所有的互联网应用程序都工作在应用层,每个应用程序开发者都可以制定自己的应用层协议.
    现在常见的应用层协议有:HTTP,SMTP,FTP等.

  • 表示层

    表示层的主要作用是:数据格式转化,数据的加密与解密,数据压缩与解压缩.

  • 会话层

    会话层建立在传输层之上,利用传输层提供的服务,使应用建立和维持会话,并能使会话获得同步.

  • 传输层

    传输层主要协议有TCP和UDP两种,负责网络中端到端的数据传输,所谓的端就是上层应用程序绑定的端口,在网络中体现为 ip+port.

  • 网络层

    网络层是OSI参考模型中最复杂的一层,通过路由选择算法,为分组通过通信子网选择最合适的路径,实现网络中主机到主机的数据传输.
    该层的主要协议有:IP,IPX,RIP,OSPF协议等.

  • 数据链路层

    主要负责网络中点到点的数据传输.这里的点指网络中的每一个网络设备.
    

    该层将数据封装成帧,按顺序传输帧.

  • 物理层

    物理层为网络设备间的通信提供传输媒介和互联设备,为数据传输提供可靠环境.


TCP/IP协议簇

  • 应用层

    与OSI七层模型中应用层相对应,可由开发者制定协议内容.
    主要协议为:HTTP,FTP,SMTP等

  • 传输层

    主要为TCP和UDP协议,提供端到端的数据传输.

  • 网络层

    提供主机到主机之间的数据传输.

  • 数据链路层

    提供网络节点到网络节点之间的数据传输.

  • 物理层

    为上层协议提供可靠的数据传输环境.

TCP协议

想要彻底掌握TCP协议的原理,必须从其首部字段开始学习.

  • TCP首部信息

    源端口号(16位)目的端口号(16位)
    序列号(32位)
    确认序列号(32位)
    数据偏移(4位)保留字段(6位)控制标识位(6位)窗口大小(16位)
    校验和(16位)紧急指针(16位)
    选项(可变)

    其中选项长度可变,若没有选项字段时,TCP首部信息一共20字节.

    • 源端口号:数据接收端的端口号.

    • 目的端口号:数据发送端的端口号.

    • 序列号:由于TCP协议以字节流传输的,故在其传输过程中,为保证其数据的可靠传输,TCP传输的字节流的每个字节都按顺序编号,每个报文段的序列号都为该报文段的首个字节编号,序列号的范围是(0,232-1),共2 32个系列号,若序列号超出232,则下个序列号会继续从零开始,也就是说序列号采用了mod(232)运算.

    • 确认序列号:期望收到对方的下一个数据字节的序号.

    • 数据偏移:指TCP报文段的数据起始处距离TCP报文段起始处的偏移,即指出了TCP首部信息的长度,由于TCP首部信息的选项字段是可变长度,因此有必要指出TCP首部信息的长度,但应注意数据偏移的单位是32位(即以4字节为单位),且4位二进制数能表示的最大数为15,所以限制了TCP首部信息最大不超过60字节,故选项字段最大不超过40字节.

    • 保留字段:占6位,保留为今后所用.

    • 控制标识位:

      • URG:作用于发送端,当置1时说明该报文段需要立即被发送出去,不需要考虑发送顺序
      • ACK:确认标志位,当置1时确认序列号才有作用,当置0时确认序列号无效.
      • SYN:在建立TCP连接时用来同步序号.
      • FIN:断开连接时需要置1,表示该连接发送端的数据传输已完毕.
      • RST:复位标志位,表明TCP连接中出现严重错误,需要释放连接.
      • PSH:作用于接收端,表明接收端应优先接收此报文段.
    • 窗口大小:指定了发送方的接受缓冲区的剩余容量大小,用于流量控制.

    • 校验和:采用循环冗余校验验证数据完整性.

    • 紧急指针:仅当URG为1时起作用,指出本报文段中紧急数据的字节数.(注:当窗口大小为0时也能发送紧急数据)

  • TCP建立连接(三次握手)

    在这里插入图片描述

  • TCP断开连接(四次挥手)

在这里插入图片描述

TCP如何保证可靠数据传输?

  • 连接管理机制:即上文提到的三次握手与四次挥手.

  • 流量控制机制:通过首部字段的窗口大小字段传输接收端缓冲区大小,以确保每次数据传输不会因为缓冲区大小不够而溢出.

  • 确认应答机制:TCP为面向字节流的传输,其为传输的每一个字节按照顺序进行编号,而通过首部字段中确认序列号和ACK标志位联合,就可以向发送端说明接收端已经收到数据,下次发送的数据从哪里开始发.

  • 超时重传机制:在TCP传输过程中,由于网络拥塞等多种原因,发送端发送的报文段未被接收端所接收,如果发送端在一定时间内未收到接收端的确认应答,发送端就会重新发送报文段.TCP为了保证在任何环境下都能高质量通信,会动态计算超时重传的超时时间.

  • 滑动窗口机制:由于上述的确认应答机制中每一个报文段都需要一次ACK确认应答后才能发送下一个报文段,虽然提高了可靠性,但是从性能上来说比较差,因此为了提高确认应答的效率,推出了滑动窗口机制,滑动窗口指无需确认应答可以发送数据的最大值,只有ACK过的数据才会从滑动窗口的缓冲区中移除,由此发送端可以发送多次数据而不用等待对端确认应答的到来,即对端的确认应答报文和发送端的发送的数据不会因为某一端而阻塞.

  • 拥塞控制机制:虽然通过滑动窗口机制可以大大提高吞吐量,但是网络中有很多的计算机,如果在网络拥塞的情况下,贸然向其中发送巨量数据,会使网络拥塞雪上加霜,因此推出拥塞控制机制,以提高网络的自我调节能力(拥塞控制为整个网络环境所服务)

    • 慢开始:拥塞控制算法会在发送初期发送少量数据,以试探网络拥塞情况,即慢开始,但所谓慢开始只是起始的拥塞窗口大小很小,但增长速度很快,以指数型增长,故拥塞控制算法会在慢开始启动初期设置慢开始阈值,当拥塞窗口大小达到慢开始阈值时,会将拥塞控制窗口大小的增长方式由指数型增长转变为线性增长.
    • 拥塞避免:拥塞避免过程中拥塞窗口的大小时线性增长的,在此过程中若发生网络拥塞现象,会将当前的拥塞窗口的大小的一半当作新的慢开始阈值,重新开始拥塞控制过程.
      在这里插入图片描述
  • TCP四大定时器

    • 超时重传定时器
    • 保活定时器
    • 坚持定时器
    • 时间等待定时器

个人主站:http://risestone.club

更多资讯请关注小石coder,更有免费资料领取
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值