TCP/IP 协议详解

这篇具有很好参考价值的文章主要介绍了TCP/IP 协议详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


简介

TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。

TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。

TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和网络接口层都包含其中。

TCP/IP 协议详解

应用层

  1. 为操作系统或网络应用程序提供访问网络服务的接口;

  2. 主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。

  3. 数据传输基本单位为报文。

传输层

  • 传输层最主要的功能就是让应用层的应用程序之间完成通信和数据交换。

  • 在计算机内部运行着很多应用程序,每个应用程序都对应一个端口号,我们一般使用端口号来区分这些应用程序。

  • 传输层的协议主要分为面向有连接的协议 TCP 和面向无连接的协议 UDP

TCP

  • TCP 是一种可靠的协议,它能够保证数据包的可靠性交付;

  • TCP 能够正确处理传输过程中的丢包、传输顺序错乱等异常情况;

  • TCP 还提供拥塞控制用于缓解网络拥堵。

UDP

  • UDP 是一种不可靠的协议,它无法保证数据的可靠交付,相比 TCP ,UDP 不会检查数据包是否到达、网络是否阻塞等情况,但是 UDP 的效率比较高;

  • UDP 常用于分组数据较少或者广播、多播等视频通信和多媒体领域。

网络层

网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。

包含的主要协议:

  • IP协议(Internet Protocol,因特网互联协议)
  • ICMP协议(Internet Control Message Protocol,因特网控制报文协议)

网络接口层

通信链路层也可以分为 物理层数据链路层

  • 物理层:是 TCP/IP 的最底层是负责传输的硬件,这种硬件就相当于是以太网或电话线路等物理层的设备。

  • 数据链路层:位于物理层和网络层中间,数据链路层定义了在单个链路上如何传输数据。

数据链路层主要协议有ARPRARP,主要功能是提供链路管理错误检测、对不同通信媒介有关信息细节问题进行有效处理等。

数据包发送过程

来说一下网络数据包发送的过程:就以我们QQ聊天为例

TCP/IP 协议详解

假设QQ1 和QQ2 进行通信,QQ1 想要向QQ2 发送一个数据包,都会经历哪些奇特的操作?

1、应用层处理

QQ1 也就是用户打开了一个聊天窗口输入了你好,然后点击了发送,那么这个你好就作为一个数据包遨游在了网络中,等下还没完呢,应用层还需要对这个数据包进行处理,包括字符编码、格式化等等,这一层其实是 OSI 中表现层做的工作,只不过在 TCP/IP 协议中都归为了应用层。

数据包在发送的那一刻建立 TCP 连接,这个连接相当于通道,在这之后其他数据包也会使用通道传输数据。

2、传输层处理

TCP 会根据应用的指示,负责建立连接、发送数据和断开连接。

TCP 会在应用数据层的前端附加一个 TCP 首部字段,TCP 首部包含了源端口号目的端口号,这两个端口号用于表明数据包是从哪里发出的,需要发送到哪个应用程序上;TCP 首部还包含序号,用以表示该包中数据是发送端整个数据中第几个字节的序列号;TCP 首部还包含 校验和,用于判断数据是否损坏,随后将 TCP 头部附加在数据包的首部发送给 IP。

3、网络层的处理

网络层主要负责处理数据包的是 IP 协议,IP 协议将 TCP 传过来的 TCP 首部和数据结合当作自己的数据,并在 TCP 首部的前端加上自己的 IP 首部。因此,IP 数据包后面会紧跟着 TCP 数据包,后面才是数据本身。IP 首部包含目的和源地址,紧随在 IP 首部的还有用来判断后面是 TCP 还是 UDP 的信息。

IP 包生成后,会由路由控制表判断应该发送至哪个主机,IP 修饰后的数据包继续向下发送给路由器或者网络接口的驱动程序,从而实现真正的数据传输。

4、链路层的处理

经由 IP 传过来的数据包,以太网会给数据附上以太网首部并进行发送处理。以太网首部包含接收端的 MAC 地址、发送端的 MAC 地址以及标志以太网类型的以太网数据协议等。

5、链路层解析

QQ2收到数据包后,首先会从以太网的首部找到 MAC 地址判断是否是发给自己的数据包,如果不是发给自己的数据包则会丢弃该数据包。

如果收到的数据包是发送给自己的,就会查找以太网类型判断是哪种协议,如果是 IP 协议就会扔给 IP 协议进行处理,如果是 ARP 协议就会扔给 ARP 协议进行处理。如果协议类型是一种无法识别的协议,就会将该数据包直接丢弃。

6、网络层解析

经过以太网处理后的数据包扔给网络层进行处理,我们假设协议类型是 IP 协议,那么,在 IP 收到数据包后就会解析 IP 首部,判断 IP 首部中的 IP 地址是否和自己的 IP 地址匹配,如果匹配则接收数据并判断上一层协议是 TCP 还是 UDP;如果不匹配则直接丢弃。

注意:在路由转发的过程中,有的时候 IP 地址并不是自己的,这个时候需要借助路由表协助处理。

7、传输层解析

在传输层中,我们默认使用 TCP 协议,在 TCP 处理过程中,首先会计算一下 校验和,判断数据是否被损坏。然后检查是否按照序号接收数据,最后检查端口号,确定具体是哪个应用程序。

数据被完整的识别后,会传递给由端口号识别的应用程序进行处理。

8、应用层解析

接收端指定的应用程序会处理发送方传递过来的数据,通过解码等操作识别出数据的内容,然后把对应的数据存储在磁盘上,返回一个保存成功的消息给发送方,如果保存失败,则返回错误消息。


TCP 三次握手四次挥手

三次握手

TCP/IP 协议详解

  1. 刚开始客户端和服务端都是处于关闭的状态,而且服务器 B 端一直处于监听的状态,时刻监听是否有建立连接的请求;
  2. 当有客户端需要建立连接的时候就会发送一个确定连接的报文,此报文是同步报文SYN = 1,并且会生成一个随机的序号 seq = x,这是第一次握手;
  3. 当服务端接收到请求连接报文的时候,会发送一个同步报文确认报文,此报文 SYN = 1,并且 ACK = 1,同时服务端也会随机生成一个 seq = y,并将 ack 设置成 x + 1,回传给客户端,这是第二次握手;
  4. 当客户端接收到服务端的 ACK 报文后,会回复一个 ACK 确认报文,用于确认确认报文已经收到,此报文 ACK = 1,seq = x + 1, ack = y + 1,这是第三次握手;

说明一下:大写的 ACK 表示报文的类型是确认报文,小写的 ack 是报文里面的确认号,这个确认号是上一次握手对方的 seq 值加 1 得到。

为什么是三次握手

上面是整个三次握手的过程,现在我们分析一下为什么三次握手可以可靠的确定客户端和服务端都能支持的发送和接收数据。

  • 第一次握手:第一次握手是客户端发送同步报文到服务端,这个时候客户端是知道自己具备发送数据的能力的,但是不知道服务端是否有接收和发送数据的能力;

  • 第二次握手:当服务端接收到同步报文后,回复确认同步报文,此时服务端是知道客户端具有发送报文的能力,并且知道自己具有接收和发送数据的能力,但是并不知道客户端是否有接收数据的能力;

  • 第三次握手:当客户端收到服务端的确认报文后,知道服务端具备接收和发送数据的能力,但是此时服务端并不知道自己具有接收的能力,所以还需要发送一个确认报文,告知服务端自己是具有接收能力的。

当整个三次握手结束过后,客户端和服务端都知道自己和对方具备发送和接收数据的能力,随后整个连接建立就完成了,可以进行后续数据的传输了。

四次挥手

三次握手是为了建立可靠的数据传输通道,四次挥手则是为了保证等数据完成的被接收完再关闭连接。既然提到需要保证数据完整的传输完,那就需要保证双方都达到关闭连接的条件才能断开。

TCP/IP 协议详解

从上图中我们可以看到:

  1. 客户端发起 FIN 断开连接的报文,携带随机生成的 seq 值 u,发送给服务端,并且自己处于 FIN-WSIT 状态,这是第一次挥手;
  2. 服务端接收到 FIN 报文后,回复一个确认报文,其中 ACK = 1,随机生成一个 seq,以及 ack = u + 1,这是第二次挥手;
  3. 当服务端数据发送完了过后,再发送一个 FIN 报文给客户端,通知客户端,服务端准备关闭连接了,此报文 FIN = 1,ACK = 1,ack = u + 1,seq = w,这是第三次挥手;
  4. 当客户端收到 FIN 确认报文时再发送一个FIN 的确认报文,其中 ACK = 1,seq = u + 1,ack = w + 1,并进入 TIME-WAIT 状态,当等待 2MSL 后关闭连接,这是第四次挥手。注意:这个时候 TCP 连接还没有释放。必须经过时间等待的设置,也就是 2MSL 后,客户端才会进入 CLOSED 状态,时间 MSL 叫做最长报文段寿命(Maximum Segment Lifetime)

为什么是四次挥手

  • 第一次挥手:客户端发起关闭连接的请求给服务端;

  • 第二次挥手:服务端收到关闭请求的时候可能这个时候数据还没发送完,所以服务端会先回复一个确认报文,表示自己知道客户端想要关闭连接了,但是因为数据还没传输完,所以还需要等待;

  • 第三次挥手:当数据传输完了,服务端会主动发送一个 FIN 报文,告诉客户端,表示数据已经发送完了,服务端这边准备关闭连接了。

  • 第四次挥手:当客户端收到服务端的 FIN 报文过后,会回复一个 ACK 报文,告诉服务端自己知道了,再等待一会就关闭连接。

为什么客户端在第四次挥手后还会等待 2MSL?

等待 2MSL 是因为保证服务端接收到了 ACK 报文,因为网络是复杂了,很有可能 ACK 报文丢失了,如果服务端没接收到 ACK 报文的话,会重新发送 FIN 报文,只有当客户端等待了 2MSL 都没有收到重发的 FIN 报文时就表示服务端是正常收到了 ACK 报文,那么这个时候客户端就可以关闭了。文章来源地址https://www.toymoban.com/news/detail-501690.html

到了这里,关于TCP/IP 协议详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【计算机网络】TCP传输控制协议——三次握手

    【计算机网络】TCP传输控制协议——三次握手

    一开始,客户端和服务端都处于CLOSE状态,先是服务端监听某个端口,处于LISTEN状态。 然后客户端主动发起连接SYN,之后处于SYN-SEND状态。 服务端收到发起的连接,返回SYN,并且ACK客户端的SYN,之后处于SYN-RECV状态。 客户端收到服务端发送的SYN和ACK之后,发送ACK的ACK,之后处

    2024年02月09日
    浏览(11)
  • TCP/IP协议:最流行的电子邮件协议SMTP(简单邮件传输协议)详解

    TCP/IP协议:最流行的电子邮件协议SMTP(简单邮件传输协议)详解

    SMTP 是一种电子邮件协议,用于通过互联网从一个电子邮件帐户向另一个电子邮件帐户发送电子邮件。它是TCP/IP协议应用层的一部分。作为一种电子邮件协议,它建立了不同电子邮件客户端和帐户之间轻松信息交换的规则。这样,简单邮件传输协议就可以实现广泛的电子邮件

    2024年02月20日
    浏览(7)
  • 【网络编程】TCP传输控制协议(Transmission Control Protocol)

    【网络编程】TCP传输控制协议(Transmission Control Protocol)

    (꒪ꇴ꒪ ),Hello我是 祐言QAQ 我的博客主页:C/C++语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍 快上🚘,一起学习,让我们成为一个强大的攻城狮! 送给自己和读者的一句鸡汤🤔: 集中起来的意志可以击穿顽石! 作者水平很有限,如果发现错误,请在评论区指

    2024年02月09日
    浏览(7)
  • TCP/IP协议、HTTP协议和FTP协议等网络协议简介

    TCP/IP协议、HTTP协议和FTP协议等网络协议简介

    常见的网络协议主要包括TCP/IP协议、HTTP协议、FTP协议等。 TCP/IP协议(Transmission Control Protocol/Internet Protocol)是互联网最基础的协议,由网络层的IP协议和传输层的TCP协议组成。 TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准,是Internet国际互联网络

    2024年04月10日
    浏览(17)
  • 网络传输层协议详解(TCP/UDP)

    网络传输层协议详解(TCP/UDP)

    目录 一、TCP协议 1.1、TCP协议段格式  1.2、TCP原理  确认应答机制 超时重传机制 (安全机制) 连接管理机制(安全机制)  滑动窗口  流量控制(安全机制)  拥塞控制  延迟应答(效率机制) 捎带应答(效率机制)  ​编辑面向字节流(粘包问题)  缓冲区  TCP异常情况  二、UDP协议

    2024年02月06日
    浏览(12)
  • TCP/IP网络编程(二) 套接字协议及其数据传输特性

    关于协议 如果相隔比较远的两人进行通话,必须先决定通话方式,如果一方选择电话,另一方也必须选择电话,否则接受不到消息。 总之,协议就是为了完成数据交换而定好的约定。 创建套接字 协议族 通过socket函数的第一个参数传递套接字中使用的协议分类信息,此协议

    2024年02月10日
    浏览(36)
  • 详解TCP/IP协议第三篇:通信数据在OSI通信模型的上下传输

    详解TCP/IP协议第三篇:通信数据在OSI通信模型的上下传输

    😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取! 🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

    2024年02月09日
    浏览(9)
  • 哈工大计算机网络传输层协议详解之:TCP协议

    哈工大计算机网络传输层协议详解之:TCP协议

    哈工大计算机网络课程传输层协议详解之:可靠数据传输的基本原理 哈工大计算机网络课程传输层协议详解之:流水线机制与滑动窗口协议 哈工大计算机网络课程传输层协议详解之:拥塞控制原理剖析 点对点通信 一个发送方、一个接收方 可靠的、按序的字节流 流水线机制

    2024年02月10日
    浏览(8)
  • 【网络】- TCP/IP四层(五层)协议 - 网际层(网络层) - 路由控制

    【网络】- TCP/IP四层(五层)协议 - 网际层(网络层) - 路由控制

    网际协议 IP 大致分为三大作用模块, ①IP寻址、 ②路由(最终节点为止的转发) 、③IP分包与组包。前面两篇文章讨论了IP地址的相关知识,本文继续讨论网际协议的第二个模块——路由,了解IP数据报是怎样从一个网络到另一个网络的。 在进行下面的阅读之前,先了解一个

    2024年02月06日
    浏览(5)
  • 「网络编程」传输层协议_ TCP协议学习_及原理深入理解(一)[万字详解]

    「网络编程」传输层协议_ TCP协议学习_及原理深入理解(一)[万字详解]

    「前言」文章内容大致是传输层协议,TCP协议讲解,续上篇UDP协议。 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) TCP( Transmission Control Protoco l)是一种面向连接的、可靠的传输协议,TCP全称为 \\\"传输控制协议”,TCP人如其名,要对数据的传输进行一个

    2024年02月16日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包