0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TCP/IP协议基础知识总结

算法与数据结构 来源:算法与数据结构 作者:程序员cxuan 2021-01-04 14:32 次阅读

60f68344-4423-11eb-8b86-12bb97331649.png

要说我们接触计算机网络最多的协议,那势必离不开 TCP/IP 协议了,TCP/IP 协议同时也是互联网中最为著名的协议,下面我们就来一起聊一下 TCP/IP 协议。

TCP/IP 的历史背景

最初还没有 TCP/IP 协议的时候,也就是在 20 世纪 60 年代,许多国家和地区认识到通信技术的重要性。美国国防部希望能够研究一种即使通信线路被破坏也能够通过其他路线进行通信的技术。为了实现这种技术,出现了分组网络。

61506a1c-4423-11eb-8b86-12bb97331649.png

即使在两个节点通信的过程中,几个节点遭到破坏,却依然能够通过改变线路等方式使两个节点之间进行通信。

这种分组网络促进了ARPANET(Advanced Research Projects Agency Network)的诞生。ARPANET 是第一个具有分布式控制的广域包分组交换网络,也是最早实现 TCP/IP 协议的前身。

ARPANET 其实是由 美国国防部高级研究计划局 计划建立。

所以,计算机网络的出现在最一开始是因为军事研究目的。

20 世纪 90 年代,IOS 开展了 OSI 这一国际标准化的进程,然而却没有取得实质性的进展,但是却使 TCP/IP 协议得到了广泛使用。

这种致使 TCP/IP 协议快速发展的原因可能是由于 TCP/IP 的标准化。也就是说 TCP/IP 协议中会涉及到 OSI 所没有的标准,而这种标准将是我们接下来主要探讨的内容。

这里我们先来认识一下 TCP/IP 协议,TCP/IP 协议说的不仅仅只是 TCP 和 IP 这两种协议,实际上,TCP/IP 指的是协议簇,协议簇是啥呢?简单来说就是一系列协议的综合,如果下次再问你 TCP/IP 协议有哪些的话,可以把下面这张图甩给他

61726310-4423-11eb-8b86-12bb97331649.png

以上的协议汇总起来,就是 TCP/IP 协议簇。

TCP/IP 标准

TCP/IP 相较于其他协议的标准,更注重两点:开放性和实用性,即标准化能否被实际使用。

开放性说的是 TCP/IP 是由IETF讨论制定的,而 IETF 本身就是一个允许任何人加入进行讨论的组织。

实用性说的是就拿框架来说,如果只浮于理论,而没有落地的实践,那么永远成为不了主流。

TCP/IP 的标准协议就是我们所熟知的RFC 文档,当然你可以在网络上看到。RFC 不仅规范了协议标准,还包含了协议的实现和使用信息

关于更多 RFC 协议,你可以看一下官方文档 https://www.rfc-editor.org/rfc-index.html

这里我们不再详细展开介绍了,我们这篇文章的重点要放在对 TCP/IP 的研究上。

TCP/IP 协议簇

下面我们就开始聊一聊 TCP/IP 协议簇。

TCP/IP 协议是我们程序员接触最多的协议,OSI 模型共有七层,从下到上分别是物理层、数据链路层、网络层、运输层、会话层、表示层和应用层。但是这显然是有些复杂的,所以在 TCP/IP 协议中,它们被简化为了四个层次

61ae4b32-4423-11eb-8b86-12bb97331649.png

下面我们从通信链路层开始介绍一下这些层以及与层之间的协议。

通信链路层

如果非要细分的话,通信链路层也可以分为物理层和数据链路层。

物理层

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

数据链路层

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

网络层

网络层主要使用IP协议,IP 协议基于 IP 地址转发分包数据。

61d0ea66-4423-11eb-8b86-12bb97331649.png

IP 协议的主要作用就是将分组数据包发送到目标主机

TCP/IP 分层中的互联网层与传输层的功能通常由操作系统提供。

IP 还隐含着数据链路层的功能,通过 IP 协议,相互通信的主机之间不论经过怎样的底层数据链路,都能够实现相互通信。

虽然 IP 也是一种分组交换协议,但是 IP 却不具备重发机制。即使数据没有到达另一端也不会进行重发,所以 IP 属于非可靠性协议。

网络层还有一种协议就是ICMP,因为 IP 在数据包的发送过程中可能会出现异常,当 IP 数据包因为异常而无法到达目标地址时,需要给发送端发送一个异常通知,ICMP 的主要功能就在于此了。鉴于此情况,ICMP 也可以被用来诊断网络情况。

传输层

我们上面刚介绍完 TCP/IP 协议最重要的 IP 协议后,下面我们来介绍一下传输层协议,TCP 协议是传输层协议的一种。

传输层就好像高速公路一样,连接两个城市的道路。下面是互联网的逻辑通道,你可以把它想象成为高速公路。

62151a7e-4423-11eb-8b86-12bb97331649.png

传输层最主要的功能就是让应用层的应用程序之间完成通信和数据交换。在计算机内部运行着很多应用程序,每个应用程序都对应一个端口号,我们一般使用端口号来区分这些应用程序。

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

TCP

TCP 是一种可靠的协议,它能够保证数据包的可靠性交付,TCP 能够正确处理传输过程中的丢包、传输顺序错乱等异常情况。此外,TCP 还提供拥塞控制用于缓解网络拥堵。

UDP

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

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

应用层

在 TCP/IP 协议簇中,将 OSI 标准模型中的会话层、表示层都归为了应用层。应用层的架构大多属于客户端/服务端模型,提供服务的程序叫做服务端、接受服务的程序叫做客户端。在这种架构中,服务端通常会提前部署到服务器上,等待客户端的连接,从而提供服务。

6253c634-4423-11eb-8b86-12bb97331649.png

数据包的发送历程

下面我们来介绍一下一个数据包是如何经过应用层、运输层、网络层和通信链路层把一个数据包发送给另外一个数据包的。

数据包结构

我们首先先来认识一下数据包的结构,这里 cxuan 只是给你简单介绍一下,后面的文章会更加详细的介绍。

62885e58-4423-11eb-8b86-12bb97331649.png

在上面的每个分层中,都会对所发送的数据增加一个首部,这个首部中包含了该层必要的信息。每一层都会对数据进行处理并在数据包中附上这一层的必要信息。下面我们就来聊一聊数据包的发送过程。

数据包发送历程

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

应用层的处理

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

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

传输层的处理

为了描述信息能准确的到达另一方,我们使用 TCP 协议来进行描述。TCP 会根据应用的指示,负责建立连接、发送数据和断开连接。

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

网络层的处理

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

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

如果不知道目标主机的 IP 地址,可以利用ARP(Address Resolution Protocol)地址解析协议进行查找。

通信链路层的处理

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

下面是完整的处理过程和解析过程。

62af6340-4423-11eb-8b86-12bb97331649.png

如上图所示,左侧是数据的发送处理过程,应用层的数据经过层层处理后会变为可以发送的数据包,经过物理介质发送至指定主机中。

数据包的接收流程是发送流程的逆序过程,数据包的解析同样也会经过下面这几步。

通信链路的解析

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

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

网络层的解析

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

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

传输层的处理

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

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

应用程序的处理

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

上面是一个完整的数据包收发过程,在上面的数据收发过程中,涉及到不同层之间的地址、端口号、协议类型等,那么我们现在就来剖析一下。

数据包经过每层后,该层协议都会在数据包附上包首部,一个完整的包首部图如下所示

62d9ed54-4423-11eb-8b86-12bb97331649.png

在数据包的发送过程中,各层依次对数据包添加了首部信息,每个首部都包含发送端和接收端地址以及上一层的协议类型。以太网会使用 MAC 地址、IP 会使用 IP 地址、TCP/UDP 则会用端口号作为识别两端主机的地址。

此外,每个分层中的包首部还包含一个识别位,它是用来标识上一层协议的种类信息。

责任编辑:xj

原文标题:TCP/IP 基础知识总结

文章出处:【微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 网络协议
    +关注

    关注

    3

    文章

    266

    浏览量

    21543
  • TCP/IP
    +关注

    关注

    0

    文章

    15

    浏览量

    10581

原文标题:TCP/IP 基础知识总结

文章出处:【微信号:TheAlgorithm,微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是socket编程 socket与tcp/ip协议的关系

    基于TCP/IP协议族,这是一组用于网络通信的协议,包括传输控制协议TCP)和互联网
    的头像 发表于 11-01 16:01 335次阅读

    Modbus RTU协议与Modbus TCP/IP协议的区别

    Modbus RTU和Modbus TCP/IP的本质都是Modbus协议,都是通过Modbus寄存器地址来交换数据的,那么它们之间有什么区别呢?今天我们从以下几个方面来探讨一下。
    的头像 发表于 10-18 17:44 602次阅读

    TCP协议是什么

    在网络通信的广阔领域中,TCP(Transmission Control Protocol,传输控制协议)扮演着举足轻重的角色。作为TCP/IP协议
    的头像 发表于 10-09 13:54 634次阅读

    EtherNet/IP主站转Modbus-TCP协议网关

    捷米特JM-EIPM-TCP网关实现连接EtherNet/IP设备和网络到Modbus TCP网络系统。该网关可实现双向数据交换,既允许现有的、低成本的EtherNet/IP设备集成到
    的头像 发表于 09-25 11:49 235次阅读
    EtherNet/<b class='flag-5'>IP</b>主站转Modbus-<b class='flag-5'>TCP</b><b class='flag-5'>协议</b>网关

    EtherNet/IP转Modbus-TCP协议转换网关

    在工业自动化领域中,EtherNet/IP转Modbus-TCP这两种网络协议的互通互联非常重要。有一款优秀的设备——远创智控YC-EIP-TCP,能够出色地解决这一难题。此设备性能优
    的头像 发表于 09-06 16:54 256次阅读
    EtherNet/<b class='flag-5'>IP</b>转Modbus-<b class='flag-5'>TCP</b><b class='flag-5'>协议</b>转换网关

    EtherNet/IP转Modbus-TCP协议网关(EtherNet/IP转Modbus-TCP

    /IP转Modbus TCP从站协议网关,可以实现对这些设备的集中管理和控制。 二,典型应用拓扑图 三,设备技术参数 捷米特JM-EIP-TCP设备在Et
    的头像 发表于 09-04 11:09 409次阅读
    EtherNet/<b class='flag-5'>IP</b>转Modbus-<b class='flag-5'>TCP</b><b class='flag-5'>协议</b>网关(EtherNet/<b class='flag-5'>IP</b>转Modbus-<b class='flag-5'>TCP</b>)

    一文了解TCP/IP协议

    TCP/IP协议是现代计算机网络通信的基础,是互联网及局域网广泛使用的一套协议TCP/IP
    的头像 发表于 08-07 15:38 1940次阅读
    一文了解<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>

    华纳云:TCP IP协议的发展和优势

    TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)是互联网和现代计算机网络的基础
    的头像 发表于 07-25 16:49 501次阅读

    TCP IP协议属性设置中的IP配置

    在现代网络中,TCP/IP协议是基础架构的重要组成部分。掌握TCP/IP协议属性设置中的
    的头像 发表于 07-23 10:10 515次阅读

    TCP/IP协议栈的设计与实现_中文

    电子发烧友网站提供《TCP/IP协议栈的设计与实现_中文.pdf》资料免费下载
    发表于 07-03 11:28 4次下载

    LwIP协议栈源码详解—TCP/IP协议的实现

    电子发烧友网站提供《LwIP协议栈源码详解—TCP/IP协议的实现.pdf》资料免费下载
    发表于 07-03 11:22 3次下载

    从表象到本质:深入探究TCP/IP协议

    在信息技术飞速发展的今天,网络已成为人类社会不可或缺的部分。实现网络中计算机相互通信的关键之一便是TCP/IP协议。作为互联网的基础,TCP/IP
    的头像 发表于 06-15 09:12 527次阅读
    从表象到本质:深入探究<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>

    TCP/IP协议簇中必知必会的十大问题

    TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心
    发表于 04-22 12:48 384次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>簇中必知必会的十大问题

    Microchip TCP/IP 协议栈应用笔记

    电子发烧友网站提供《Microchip TCP/IP 协议栈应用笔记.pdf》资料免费下载
    发表于 04-17 14:16 1次下载

    TCP/IP协议数据的处理流程

    TCP/IP协议的设计目标是提供一种通用、灵活且可扩展的协议体系,使得不同种类的设备和系统能够互相通信,实现互联网的互联互通。
    发表于 02-03 16:30 1604次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>数据的处理流程