TCP/IP协议详解

      最后更新:2022-01-19 19:03:43 手机定位技术交流文章

      网络协议

      在计算机网络要做到井井有条的交换数据,就必须遵守一些事先约定好的规则,比如交换数据的格式、是否需要发送一个应答信息。这些规则被称为网络协议。如TCP、IP 等协议。

      计算机网络体系结构

      image-20220118113153669

      OSI参考模型

      OSI(Open System Interconnect),即开放式系统互联。一般都叫 OSI 参考模型,是 ISO(国际标准化组织)组织在1985年研究的网络互连模型。ISO 为了更好的使网络应用更为普及,推出了 OSI 参考模型,这样所有的公司都按照统一的标准来指定自己的网络,就可以互通互联了。

      OSI 定义了网络互连的七层框架(物理层数据链路层网络层传输层会话层表示层应用层)。

      模型名称 功能
      应用层 为操作系统或网络应用程序提供访问网络服务的接口。
      表示层 定义数据格式及加密。对来自应用层的命令和数据进行解释,以确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。
      会话层 是用户应用程序和网络之间的接口,负责在网络中的两节点之间建立、维持和终止通信。
      传输层 管理端到端的数据传输,负责可靠传输(确保数据被可靠地传送到目标地址)。
      网络层 将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径。
      数据链路层 通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
      物理层 利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。

      TCP/IP参考模型

      模型名称 功能
      应用层 最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。
      传输层 建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,TCP、UDP 就是在这一层。端口号既是这里的“端”。
      网络层 通过 IP 寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。IP协议是 Internet 的基础。
      数据链路层 通过一些规程或协议来控制这些数据的传输,以保证被传输数据的正确性。实现这些规程或协议的硬件和软件加到物理线路,这样就构成了数据链路。

      应用层协议分析

      运行在 TCP 协议上的协议:

      • HTTP(Hypertext Transfer Protocol,超文本传输协议):主要用于普通浏览。
      • HTTPS(HTTP over SSL,安全超文本传输协议):HTTP 协议的安全版本。
      • FTP(File Transfer Protocol,文件传输协议):用于文件传输。
      • POP3(Post Office Protocol, version 3,邮局协议):收邮件用。
      • SMTP(Simple Mail Transfer Protocol,简单邮件传输协议):用来发送电子邮件。
      • TELNET(Teletype over the Network,网络电传):通过一个终端(terminal)登陆到网络。
      • SSH(Secure Shell,用于替代安全性差的 TELNET):用于加密安全登陆用。

      运行在 UDP 协议上的协议:

      • BOOTP(Boot Protocol,启动协议):应用于无盘设备。
      • NTP(Network Time Protocol,网络时间协议):用于网络同步。
      • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议):动态配置 IP 地址。

      运行在 TCP 和 UDP 协议上

      • DNS(Domain Name Service,域名服务):用于完成地址查找,邮件转发等工作。
      • ECHO(Echo Protocol,回绕协议):用于查错及测量应答时间。
      • SNMP(Simple Network Management Protocol,简单网络管理协议):用于网络信息的收集和网络管理。
      • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议):动态配置 IP 地址。
      • ARP(Address Resolution Protocol,地址解析协议):用于动态解析以太网硬件的地址。

      TCP/IP 与 UDP

      TCP/IP

      TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP 协议不仅仅指的是 TCP 和 IP 两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇,只是因为在 TCP/IP 协议中 TCP 协议和 IP 协议最具代表性,所以被称为TCP/IP 协议。

      TCP/IP 提供了点对点链接的机制,将资料应该如何封装、寻址、传输、路由以及在目的地如何接收,都加以标准化。它将软件通信过程抽象化为四个抽象层,采取协议堆栈的方式,分别实现出不同通信协议。协议族下的各种协议,依其功能不同,分别归属到这四个层次结构之中,常视为是简化的七层 OSI 模型。

      UDP

      UDP 它是属于 TCP/IP 协议族中的一种。是无连接的协议,发送数据前不需要建立连接,是没有可靠性的协议。因为不需要建立连接所以可以在在网络上以任何可能的路径传输,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。

      应用场景

      对某些实时性要求比较高的情况使用 UDP,比如游戏,媒体通信,实时直播,即使出现传输错误也可以容忍;其它大部分情况下,HTTP 都是用 TCP,因为要求传输的内容可靠,不出现丢失的情况。

      区别

      • TCP 是面向连接的;UDP 是无连接的。
      • TCP 是可靠的;UDP 是不可靠的。
      • TCP 只支持点对点通信;UDP 支持一对一、一对多、多对一、多对多的通信模式。
      • TCP 是面向字节流的;UDP 是面向报文的。
      • TCP 有拥塞控制机制;UDP 没有拥塞控制,适合媒体通信。
      • TCP 首部开销(20个字节);UDP 首部开销(8个字节)。

      三次握手,四次挥手

      三次握手 建立连接

      我要和你建立链接。你真的要和我建立链接么。我真的要和你建立链接,成功!

      • 第一次握手:Client 将标志位 SYN 置为1,随机产生一个值 Seq=J,并将该数据包发送给 Server,Client 进入 SYN_SENT 状态,等待 Server 确认。
      • 第二次握手:Server 收到数据包后由标志位 SYN=1 知道 Client 请求建立连接,Server 将标志位 SYN 和 ACK 都置为1,ACK=J+1,随机产生一个值Seq=K,并将该数据包发送给 Client 以确认连接请求,Server 进入 SYN_RCVD 状态。
      • 第三次握手:Client 收到确认后,检查 ACK 是否为 J+1,ACK 是否为1,如果正确则将标志位 ACK 置为1,ACK=K+1,并将该数据包发送给 Server,Server 检查 ACK 是否为 K+1,ACK 是否为1,如果正确则连接建立成功,Client 和 Server 进入ESTABLISHED状态,完成三次握手,随后 Client 与 Server 之间可以开始传输数据了。

      四次挥手 释放连接

      我要和你断开链接。好的,断吧。我也要和你断开链接。好的,断吧!

      • 第一次挥手:Client 发送一个 FIN,用来关闭 Client 到 Server 的数据传送,Client 进入 FIN_WAIT_1 状态。
      • 第二次挥手:Server 收到 FIN 后,发送一个 ACK 给 Client,确认序号为收到序号+1(与 SYN 相同,一个 FIN 占用一个序号),Server 进入CLOSE_WAIT状态。此时 TCP 链接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收。
      • 第三次挥手:Server 发送一个 FIN,用来关闭 Server 到 Client 的数据传送,Server 进入LAST_ACK状态。
      • 第四次挥手:Client 收到 FIN 后,Client 进入TIME_WAIT状态,接着发送一个 ACK 给 Server,确认序号为收到序号+1,Server 进入CLOSED状态,完成四次挥手。

      TCP 协议保证传输的可靠性方式

      TCP 提供一种面向连接的、可靠的字节流服务。其中,面向连接意味着两个使用 TCP 的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个 TCP 连接。在一个 TCP 连接中,仅有两方进行彼此通信;而字节流服务意味着两个应用程序通过 TCP 链接交换 8 bit 字节构成的字节流,TCP 不在字节流中插入记录标识符。

      对于可靠性,TCP通过以下方式进行保证:

      数据包校验

      目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时 TCP 发送数据端超时后会重发数据;

      对失序数据包重排序

      既然 TCP 报文段作为 IP 数据报来传输,而 IP 数据报的到达可能会失序,因此 TCP 报文段的到达也可能会失序。TCP 将对失序数据进行重新排序,然后才交给应用层;

      丢弃重复数据

      对于重复数据,能够丢弃重复数据;

      应答机制

      当 TCP 收到发自 TCP 连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;

      超时重发

      当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;

      流量控制

      TCP 连接的每一方都有固定大小的缓冲空间。TCP 的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP 使用的流量控制协议是可变大小的滑动窗口协议。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/16865.html

          热门文章

          文章分类