TCP/IP--TCP协议从头到尾

329 阅读2分钟

这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战

网络分层

主流网络分层体系结构有两种

  • OSIOpen Systems Interconnection Reference Model)模型(7层网络模型)
  • TCP/IP(Transmission Control Protocol/Internet Protocol)模型(4层网络模型)(其中 以tcp协议和ip协议名字命名)

image.png image.png

OSI模型是国际化标准定义的模型,这是最标准的模型,不过标准是标准,现实是现实,OSI因为各种原因过于冗余没有得到广泛的推广,tcp/ip模型更将OSI模型中的一些层做了结合,在目前的得到了广泛的使用。

由图可见,TCP/IP 是互联网相关的各类协议族的总称,比如:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等都属于 TCP/IP 族内的协议。

其中 最重要的tcp协议 位于传输层,当一台计算机想要与另一台计算机通讯时,两台计算机之间的通信需要畅通且可靠,这样才能保证正确收发数据。就像你在浏览网页时,向服务器发送请求以后,服务器把网页数据封装成一个一个的数据包📦,如果其中,一些数据包丢失了,那网页是不是就会有残缺,tcp协议就很好的解决了这个问题可以确保,数据包安全准确有序的到达你的计算机。

tcp的连接过程

掘金的这位同学写的很详细,可以参考 codeGoogle 连接过程经历了三次握手🤝,和四次挥手🙋来确保数据可以安全的到达。

tcp协议的特点

  • 面向链接 就是数据发送前要建立好连接
  • 一对一传输 仅仅支持建立连接的两个计算机来通信,不能进行一堆多,多对一等传输
  • 面向字节流 面向字节流的话,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。如果应用程序一次只发送一个字节,TCP也可以等待积累有足够多的字节后再构成报文段发送出去。
  • 可靠传输 tcp协议可以给每个包编号,如果接收到了数据包就会发送一个(ACK)确认,如果超过一定时间没有接收到确认信息的话,数据包会重新发送
  • 提供全双工通信 互相建立连接的进程,可以互相发送信息,双向通信

参考文章: 一文搞懂TCP与UDP的区别 阮一峰 面向报文(UDP)和面向字节流(TCP)的区别