前言:

  在网络上有非常都关于计算机网络的知识,常常感觉看懂了,但没几天就忘得没影了。自己写一篇相关的文章是一个总结和消化的过程。这篇文章大致讲明白了各层通信协议的要点,此文对于了解整个网络通信流程有较大帮助。PS:时间充裕的话,还是建议看书。
相关知识:
传送门:关于HTTP协议,一篇就够了
传送门:网络通信的整个流程
传送门:路由器与交换机的工作原理


文章目录

  • 前言:
  • 1 TCP/IP五层模型与OSI七层模型
    • 1.0 OSI是什么
    • 1.1 TCP/IP五层模型与OSI七层模型分别是什么
    • 1.2 TCP/IP五层模型与OSI七层模型的工作设备
    • 1.3 TCP/IP五层模型与OSI七层模型的协议
    • 1.4 四层、五层、还是七层?
  • 2 计算机网络——以五层模型来说明工作原理
    • 2.0 数据封装的概念
    • 2.1 物理层在干吗
    • 2.2 数据链路层
      • 2.2.1 以太网协议
      • 2.2.2 广播与ARP协议
    • 2.3 网络层
      • 2.3.1 IP协议
      • 2.3.2 ARP协议
      • 2.3.3 DNS服务器
    • 2.4 传输层
      • 2.4.1 UDP
        • UDP的特点
        • UDP的优势
        • UDP的例子
      • 2.4.1 TCP
        • TCP协议应该关注的问题
        • TCP 的三次握手
          • a.建立连接
      • SYN攻击:
        • TCP的四次挥手
          • 顺序问题、丢包问题、流量控制、拥塞控制
          • TCP的面试题
      • 2.4.5 一个IP包从一个主机传递到另一个主机的过程(图)
    • 2.5 应用层
    • 3 总结
    • 参考:

1 TCP/IP五层模型与OSI七层模型

这部分图片来自于:OSI七层模型与TCP/IP五层模型

1.0 OSI是什么

  OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。
  ISO为了更好的使网络应用更为普及,推出了OSI参考模型。其含义就是推荐所有公司使用这个规范来控制网络。这样所有公司都有相同的规范,就能互联了。
https://blog.csdn.net/xj5210224/article/details/90650379

1.1 TCP/IP五层模型与OSI七层模型分别是什么

1.2 TCP/IP五层模型与OSI七层模型的工作设备

  关于硬件,有兴趣可以看下:二层、三层、四层交换机、路由器的区别

1.3 TCP/IP五层模型与OSI七层模型的协议


注:五层模型与七层模型,图源

1.4 四层、五层、还是七层?

  TCP/IP模型原为四层,而TCP/IP五层模型实际上是TCP/IP与OSI七层模型的混合后的产物。说到底,这些模型的出现目的是为了使大家都使用统一的协议(通信规则)来通信。可以看到,五层模型和七层模型在物理层、数据链路层、网络层、传输层都用的是相同的协议,他们是统一的。不同点只在于应用层部分。应用程序复杂多变,比如电子邮件用的是SMTP协议、WEB服务器用HTTP协议。应用程序可以根据自己的需求特点,来使用各种不同的协议。而五层模型和七层模型在应用层的理念各有优劣,也因此在不同的协议中得到实现。
  前面我们说过,TCP/IP协议是互联网协议(簇)的统称,他是互联网标准通信的基础,它提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。而OSI模型是开放式系统互联通信参考模型——笔者的理解是:
  OSI是一个完整的、完善的宏观模型,他包括了硬件层(物理层),当然也包含了很多上面途中没有列出的协议(比如DNS解析协议等);而TCP/IP(参考)模型,更加侧重的是互联网通信核心(也是就是围绕TCP/IP协议展开的一系列通信协议)的分层,因此它不包括物理层,以及其他一些不想干的协议;其次,之所以说他是参考模型,是因为他本身也是OSI模型中的一部分,因此参考OSI模型对其分层。

这一段参考了:游骑兵810

此图来自——Java面试突击


2 计算机网络——以五层模型来说明工作原理

2.0这段主要参考IP协议基础,而后面几个小节参考的是一文读懂一台计算机是如何把数据发送给另一台计算机的 - 帅地的文章 - 知乎。PS:这里的信息正确与否自己没有求证过——没看过完整的计算机网络,因此只是拾人牙慧罢了。

2.0 数据封装的概念

  封装即每一层接收上层数据时,都会添加自己特定的头部数据(有时也会有尾部数据)。这些头部数据实际上就是实现协议的规定,即加上相应的“暗号”、“黑话”。一个很好的例子:人是数据,“暗号”就是人的头部数据。当喊出“天王盖地虎”,回答“宝塔镇河妖”,那我们就是自己人,可以开始联系了。假如你的暗号是“三个臭皮匠”,“顶个诸葛亮”,那你就忽略掉前面的“天王盖地虎”。

  如下图,应用层到传输层时,应用数据的基础上添加了TCP的header,就变成了TCP segment 。

  传输层到网络层时,就在TCP segment的基础上添加了IP的header,整个数据变成了IP datagram(数据在网络层中传送需要IP地址的信息来寻路)。

  网络层到链路层时,就在IP datagram的基础上添加了Ethnet header和Ethnet triler数据,变成了Ethernet frame(数据链路层中数据传送则需要Ethnet提供的信息)。

在传输层以下的各层中,数据的传递流程如下图:

  下面是介绍各层都在干嘛,用什么协议实现连接和通讯。

2.1 物理层在干吗

  设备:电缆、双绞线、无线网(电磁微波)、中继器、集线器。
  功能:实现0、1信号的传输。这些0、1信号就是计算机能够识别的数据。

2.2 数据链路层

  经物理层传输后,接收到信号如下:

  问题:看得懂吗?谁送的信号?送给谁?因此,我们需要有一个规定(协议)来说明怎么我们该怎么编制有用的信号,然后大家就照这个来。
  涉及硬件:网桥、网卡、以太网交换机

2.2.1 以太网协议

以太网这段参考:数据链路层之以太网协议
  以太网协议就是来解决上面问题的。他规定一个数据包(帧)应该包含以下内容:

  一个电信号就是一个比特位。
  地址:以太网帧中,目的地址与源地址这里都指的是 MAC 地址(Media Access Control Address)。每一个主机都有网卡接口,网卡会产生一个 MAC 地址,该地址由供应商代码和序列号组成(参考),长度是 48 位,所以这里的目的地址与源地址都是 6 个字节,也就是 48 个比特位。
  数据质量:在以太网帧的最后,是一个 CRC 校验码,来校验数据是否异常。
  向上交付时的协议:在中间,有一个两个字节的类型标识。这个类型字段有三种值,分别是 : IP、ARP、RARP,对应的是向上层交付时采用的协议(上一层怎么读懂我)。

  问题:虽然有地址,但发出时是以广播的形式发出,即所有连着的计算机都可能收到信号,怎么办?另:如果A计算机要给B发消息,那A怎么知道B的地址呢?

2.2.2 广播与ARP协议

  广播:计算机以广播的形式发出信号,所有连着的计算机都可能受到信号,这是接受到信号的计算机判断目的地址是不是自己。是,则接受;否,则丢弃。就像在广场上,有人大呼某个人的名字,你听到了,则判断如果是你,则回应,否则,就当没听见。
  ARP协议:计算机 A 是如何知道计算机 B 的 MAC 地址的呢?这个时候就得由 ARP 协议这个家伙来解决了,不过 ARP 协议会涉及到IP地址,我们下面才会扯到IP地址。因此我们先放着,就当作是有这么一个 ARP 协议,通过它我们可以知道子网中其他计算机的 MAC 地址。

  此外,为了明晰整个思路,在这里要思考下(虽然下面也有提到):有了MAC地址(按照2.2.1可知它唯一标志了一台计算机),计算机不就可以通过它来通信了吗,为什么还有IP地址?答案是MAC确实可以通信了,但是仅限于在一个子网(局域网)中。利用IP地址的理念可将主机划分在不同的子网中,主机只会收到子网内的广播信息。否则,计算机会收到全世界的主机广播而来的数据,这样但是判断每个数据是否发给自己,都要忙死了,效率会十分低下。
  另一个值得思考的问题是:IP地址也可以唯一标识一台主机,那么是不是因为有了IP,那么MAC地址就显得多余呢?答案可以在有了 IP 地址,为什么还要用 MAC 地址? - 向往美的回答 - 知乎里找到。简单来说,IP(因特网)并没有定义底层的通信协议。由于历史的原因,局域网(以太网)是先于因特网存在的。因特网中,如IP等更高层的协议出现,目的是不让主机的通信紧紧局限于局域网中,而要让世界范围内的主机都可以通信。因此,因特网实际也包含了以太网协议,没有必要因为IP的出现而废止掉以太网协议,在以太网基础上构建因特网就可以了。IP地址和MAC地址之间的翻译是通过2.3.2中的ARP协议实现的。

  • PS:数据链路层主要涉及以太网协议和ARP协议,最常用的实现这些协议的硬件和软件是网络适配器

2.3 网络层

  网络层涉及硬件、软件:路由器(有内置软件)、三层交换机。路由器将局域网和广域网相连,实现不同网络间的通信,根据路由选择协议(Routing Protocol)提供的功能,它可以自动学习和记忆网络运行情况,在需要时自动计算数据传输的最佳路径(参考:路由器和网关的区别)。
  网络层有以下协议:Internet协议(IP)、nternet控制信息协议(ICMP)、址解析协议(ARP)、反向地址解析协议(RARP)(主机可以发送MAC地址给局域网内的RARP服务器,以请求对应的IP地址,若RARP列表中有该MAC地址,则返回IP供其使用,反之,则主机没有IP地址可用——ARP与RARP)。

  实际上,广播时只有同一个子网中的计算机能收到,而互联网实际上是由无数个子网组成的。
   为什么要有子网? 这样划分很有好处,否则全世界无数的计算机都会收到数据包,光是判断这个数据包的工作量无法忍受。
  进一步,怎么区分MAC地址是否为同一个子网?解决方案是使用IP协议。

2.3.1 IP协议

  IP协议规定的是数据报,其信息如下:

  数据报中包含IP协议版本、IP header的长度、服务类型(最小延时,最大传输,最大可靠性,最小消耗等)、整个数据报字节数、识别号……源IP地址、目标IP地址。
  IP协议定义的地址称为IP地址。目前有两种版本,一种是IPv4(地址长度32位),另一种是IPv6,IPv6版本可以提供更多的地址(地址长度128位——IPV4与IPV6的区别(史上最详细))。目前主要是IPv4,因此下面主要讨论IPv4。
  IPv4由32位二进制数组成,一般将其分为四段十进制来表示。地址范围为:0.0.0.0~255.255.255.255 。
  IP地址怎么帮我们找到一个设备(计算机)呢?实际上IP地址给出了计算机的两部分信息:1、网络部分,给出计算机所处的子网;2、主机部分计算机的主机地址。
  那进一步这两个部分分别对应哪些二进制位数呢?实际上这两个部分所占的二进制位数并是不固定的。因为我们可以根据子网的规模合理分配IP地址。比如一个少于255台主机的子网主机部分只需占8位就够了,如果占了16位,则很多地址都不会被用到,这是极大的浪费。
  那我怎么知道网络部分和主机部分分别占几位呢?解决方案是引入子网掩码,他也是32位二进制数,并规定网络部分全为1,主机部分全为0。比如,主机部分为8位时,则对应的子网掩码是:
  11111111.11111111.11111111.00000000,即255.255.255.0。

  有了子网掩码,就知道了哪些是网络部分,进而只需要把两个IP地址网络部分的网络部分对比,就知道是否在同一个子网中。

2.3.2 ARP协议

  现在知道了IP协议,回头说ARP协议。之前说了他是用来得到同一个子网中目标计算机的MAC 地址,怎么实现呢? MAC地址是数据链路层的通信协议所需要的,ARP的作用也相当于通过IP来获取MAC地址。
  ARP协议也是通过广播形式发送数据包给子网中所有计算机,数据包中含有目标计算机B的IP地址(不是MAC地址)。所有收到数据包的计算机会比较该IP地址和自己是否一致。如果一致,就回复给源计算机A自己的MAC地址(该地址唯一标志了主机的网卡接口)。否则丢弃该数据包。
  有一个问题:其他计算机怎么知道你想要传数据还是想询问MAC地址?e解决方法:ARP协议中的数据包中在对方的MAC地址这一栏中,填的是一个特殊的MAC地址,其他计算机看到这个特殊的MAC地址就知道是想干嘛了。
二层交换机就使用了ARP协议,其工作流程如下:
(1) 当交换机从某个端口收到一个数据帧,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的;
(2) 再去读取数据帧头中的目的MAC地址,并在地址表中查找相应的端口;
(3) 如表中有与这目的MAC地址对应的端口,把数据帧直接复制到这端口上;
(4) 如表中找不到相应的端口则把数据帧广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。(ARP)
不断的循环这个过程,对于全网的MAC地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。

  那如果不是同一个子网,怎么发数据包给对方呢? 假如两台计算机的IP不是处于同一个子网之中,这个时候,我们就会把数据包发送给网关,然后让网关让我们进行转发传送。

2.3.3 DNS服务器

  我们一般不直接输入对方的IP地址,而是输入对方的域名(更好记的地址),DNS服务器通过解析域名来帮我们找到对应的IP地址。
  那么问题是:我们是如何知道对方计算机的IP地址的呢? 这个问题可能有人会觉得很白痴,心想,当然是计算机的操作者来进行输入了。这没错,当我们想要访问某个网站的时候,我们可以输入IP来进行访问,但是我相信绝大多数人是输入一个网址域名的,例如访问百度是输入 http://www.baidu.com 这个域名。其实当我们输入这个域名时,会有一个叫做DNS服务器的家伙来帮我们解析这个域名,然后返回这个域名对应的IP给我们的。

2.4 传输层

小引:
  传输层涉及硬件:四层交换机、四层路由器。交换机和路由器都有相应的内置软件,来实现对应层网络的连接和数据传输、转发。

这部分参考:网络协议端口号详解和TCP 和 UDP 的区别
  经过前面几层,我们已经知道如何把数据从计算机A发给计算机B。而一台计算机中的应用程序众多,我们怎么知道数据给哪一个应用呢?

  这个时候就需要用到传输层最常见的两大协议是:TCP 协议和 UDP 协议,两者最大的不同就是 TCP 提供可靠的传输,而 UDP 提供的是不可靠传输。

下面TCP和UDP的解释来自TCP 和 UDP 的区别、网络协议端口号详解以及简述TCP的三次握手过程

2.4.1 UDP

UDP的包头如下:

  • 包头中的内容:由上图可以看出,UDP最重要的信息就是端口号。如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536(即:256×256)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(256×256)。
  • 收发端口:接受数据报的进程和发送数据报的进程都需要开启端口,因此数据报中将会标识有源端口,以便接受方能顺利的回传数据报到这个端口。
  • 端口是一个队,操作系统为各个进程分配了不同的队,数据报按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
UDP的特点
  • 结构简单,因此沟通简单。
  • 不建立连接,但会监听这个端口,因此可以多对多的收发数据。
  • 不会进行拥塞控制,无论是否丢包,只顾发送。
UDP的优势
  • 需求资源少,不必建立一对一连接。对丢包不敏感的应用,或者需要处理速度快的。应用可用之。
  • 无需建立连接,可以承担广播或者多播的任务。
UDP的例子
  • 直播、实时游戏、物联网。

  作为对比,传输层的功能就是建立端口到端口的通信,而网络层的功能是建立主机到主机的通信。

2.4.1 TCP

TCP 的包头格式如下:

其中包含如下内容:

  • 首先,源端口和目标端口是不可少的。
  • 序号:Seq序号,主要是为了解决乱序问题。不编好号怎么知道哪个先来,哪个后到
  • 确认序号:Ack序号,发出去的包应该有确认,这样能知道对方是否收到,如果没收到就应该重新发送,这个解决的是不丢包的问题
  • 状态位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
    (A)URG:紧急指针是否有效。若为1,表示某一位需要被优先处理。
    (B)ACK:确认序号是否有效。
    (C)PSH:提示接收端应用程序立即从TCP缓冲区把该数据读走。
    (D)RST:对方要求重新建立连接,复位。
    (E)SYN:置为1时发起一个新连接。
    (F)FIN:置为1时,释放一个连接。
    因为 TCP 是面向连接的,因此需要双方维护连接的状态,这些状态位的包会引起双方的状态变更
  • 窗口大小,TCP 要做流量控制,需要通信双方各声明一个窗口,标识自己当前的处理能力。
TCP协议应该关注的问题

通过对 TCP 头的解析,我们知道要掌握 TCP 协议,应该重点关注以下问题:

  • 顺序问题
  • 丢包问题
  • 连接维护
  • 流量控制
  • 拥塞控制
TCP 的三次握手

关于三次握手、四次挥手强烈建议看这篇文章:TCP的三次握手与四次挥手理解及面试题(很全面)

a.建立连接

  所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:

  • (1)第一次握手:Client将报文的标志位SYN置为1,随机产生一个序号seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
  • (2)第二次握手:Server收到数据包后,由报文中的标志位SYN=1知道Client在请求建立连接;Server会发送一个报文,其中标志位SYN和ACK都置为1,确认序号为ack=J+1,随机产生一个值seq=K(这样可避免黑客很容易猜到序列号而发起攻击),并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
  • (3)第三次握手:Client收到确认报文后,检查ack是否为J+1,ACK是否为1,如果正确,则再次发送一个报文,将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
  • 需要注意的是:
    (A)不要将确认序号ack与标志位中的ACK搞混了。
    (B)确认方确认序号ack=发起方序号seq+1,两端配对

SYN攻击:

在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将长时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击是一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,使用如下命令可以让之现行:
#netstat -nap | grep SYN_RECV

TCP的四次挥手

  所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发,整个流程如下图所示(图源:TCP的三次握手与四次挥手理解及面试题(很全面)):

  • 由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN报文来终止这一方向的连接,收到一个FIN报文只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。
  • (1)第一次挥手:Client发送一个FIN报文,其中FIN置为1,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
  • (2)第二次挥手:Server收到FIN报文后,发送一个ACK报文(ACK置为1)给Client,其中确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。这时Client已不能发送数据,Server也不能接收Client的数据。但是Server还是可以给Client发数据,Client也还可以接收数据。
  • (3)第三次挥手:若Server发送一个FIN报文,用来关闭Server到Client的数据传送,则Server进入LAST_ACK状态。
  • (4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
  • 上面是一方主动关闭,另一方被动关闭的情况,实际中还会出现同时发起主动关闭的情况,具体流程如下图:

    流程和状态在上图中已经很明了了,在此不再赘述,可以参考前面的四次挥手解析步骤。
顺序问题、丢包问题、流量控制、拥塞控制
  • 可以参考TCP 和 UDP 的区别
TCP的面试题
  • 关于三次握手与四次挥手通常都会有典型的面试题,在此提出供有需求的XDJM们参考:
    (1)三次握手是什么或者流程?四次握手呢?答案前面分析就是。
    (2)为什么建立连接是三次握手,而关闭连接却是四次挥手呢?
    这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,Server可以把ACK和SYN同时置为1,放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送

2.4.5 一个IP包从一个主机传递到另一个主机的过程(图)

  此图来自:一个IP包从一个主机传递到另一个主机的过程
  针对缺省网关(即默认网关)这一点,我们在linux中使用route add命令可添加默认网关。

route add -net 10.20.30.40 netmask 255.255.255.248 eth0
#添加10.20.30.40的网络,目的ip属于子网10.20.30.40/29时,走eth0口,不需要经过网关(路由器)
route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
#添加10.20.30.48的网络,目的ip属于子网10.20.30.48/29时,需要经过网关(路由器)10.20.30.41 来转发

2.5 应用层

  终于说到应用层了,应用层这一层最接近我们用户了。

  虽然我们收到了传输层传来的数据,可是这些传过来的数据五花八门,有html格式的,有mp4格式的,各种各样。你确定你能看的懂?

  因此我们需要指定这些数据的格式规则,收到后才好解读渲染。 例如我们最常见的 Http 数据包中,就会指定该数据包是什么格式的文件了。
应用层主要有以下协议:

  • 1、超文本传输协议(HTTP):万维网的基本协议;
  • 2、文件传输(TFTP简单文件传输协议);
  • 3、远程登录(Telnet),提供远程访问其它主机功能, 它允许用户登录internet主机,并在这台主机上执行命令;
  • 4、网络管理(SNMP简单网络管理协议),该协议提供了监控网络设备的方法, 以及配置管理,统计信息收集,性能管理及安全管理等;
  • 5、域名系统(DNS),该系统用于在internet中将域名及其公共广播的网络节点转换成IP地址。

3 总结

  五层模型至此讲到这里。对于有些层讲的比较简洁,就随便概况了一下。因为如果我说的详细一点的话,篇幅肯定会特别特别长,我着已经是尽最大的努力以最简洁的方式来讲的了。如果你想详细去了解,可以去买计算机网络相应的资料,强烈推荐《计算机网络:自顶向下》这本书。希望我的讲解能让你对计算机之间数据的传输有个大概的了解。
  此外Socket技术即利用了以上原理,他提供了一系列接口(函数),来实现以上协议,使得客户端和服务器主机上的进程之间可以互相通信,具体可参考:Socket技术详解。
  
  
  
  

参考:

OSI七层模型与TCP/IP五层模型
一文读懂一台计算机是如何把数据发送给另一台计算机的
3.HCNA-HNTD——以太网帧结构
计算机网络漫谈:OSI七层模型与TCP/IP四层(参考)模型
JavaGuide
Socket技术详解
TCP的三次握手与四次挥手理解及面试题(很全面))
三次握手中为什么使用随机序号

计算机网络——五层与七层模型相关推荐

  1. 【计算机网络】OSI七层模型

    [计算机网络]OSI七层模型 简介 osi:Open System Interconnection Reference Model 作用: 将不同厂商和网络设备传输的数据格式进行规定,以实现统一识别和 ...

  2. java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之计网_Part_1-1(计算机网络体系_七层模型五层模型TCP/IP四层模型、TCPUDPIP的故事【TCP三握四挥】)整起

    PART1:计算机网络体系可以大致分为一下三种, 每一层有自己对应的协议,每一层都是向上一层提供服务,每个分层中所有的协议都称为协议栈 协议:网络中传输信息时的规范和规则 各层一些重要的协议 网络:通 ...

  3. 计算机网络--详述OSI七层模型与TCP/IP五层模型

    OSI七层协议 一.OSI参考模型 今天我们先学习一下以太网最基本也是重要的知识--OSI参考模型. 1.OSI的来源 OSI(Open System Interconnect),即开放式系统互联. ...

  4. 计算机网络中的七层模型详细总结

    计算机网络的七层架构是经常提到的,不管是找工作还是考研都会是面试笔试的高频题.可是一直都记不住这个七层模型,就算背住了也很快忘记肿么办哩,很是苦恼呢!主要原因还是因为没有真实的使用场景,也没能理解其中 ...

  5. 计算机网络的OSI七层模型

    OSI的七层模型 应用层,表示层,会话层,传输层,网络层,数据链路层,物理层.而计算机的五层协议体系结构是将应用层,表示层,会话层合并为应用层. 每层的主要作用 应用层 应用层是开放系统的最高层,是直 ...

  6. 计算机网络中的七层模型

    最近又看到这个七层模型了,一直都记不住这个七层模型,就算背住了也很快忘记.主要原因还是因为没有真实的使用场景,也没能理解其中的原理.但是这个东西是计算机网络的基础,既然碰巧看到就顺便整理一下吧.很多知 ...

  7. 01_计算机网络笔记-OSI七层模型-TCP/IP模型

    文章目录 个人博客 https://blog.csdn.net/cPen_web 计算级网络 --> computer network 线缆:光纤,网线,铜线等 网络设备:交换机,路由器 交换机 ...

  8. OSI七层模型及TCP/IP四层模型详细分析

    在计算机网络中有OSI七层模型及TCP/IP四层模型的说法,而且也是计算机很重要的知识.下面我们就来分析一下它们: OSI七层模型及TCP/IP四层模型的对比: 从上面两张图我们知道,每层之间是相互独 ...

  9. 13、计算机网络的七层模型、四层模型 以及 五层模型

    目录 ​ 一.OSI七层模型 1.1 七层模型 1.2 每层对应的功能及协议 1.3 为什么使用分层网络模型(分层的好处) 1.4 数据在各层之间的传递过程 二.TCP/IP协议栈(四层模型) 2.1 ...

最新文章

  1. iphone popViewControllerAnimated后刷新原先的表格
  2. 支持多种小程序!阿里云ARMS推出小程序监控
  3. TCP建立连接与释放连接
  4. Server.Transfer方法在页面间传值
  5. [SpringBoot2]文件上传_单文件与多文件上传的使用
  6. 【计算机网络】链路与连通
  7. 盒子模型与DOCTYPE
  8. 爬虫-腾讯视频-弹幕评论
  9. HEVC与VP9编码效率对比
  10. POJ2031Building a Space Station
  11. shellshock漏洞回顾
  12. 回顾:前端模块化和AMD、CMD规范(全)
  13. spearman相关系数(斯皮尔曼相关系数是什么意思)
  14. Ubuntu下c语言IDE学习
  15. 红帽子linux 命令,红帽子_Linux_命令全解
  16. 实验1构建多连杆机器人模型
  17. spring 事务传播级别
  18. 计算机房颁奖词,网络达人奖颁奖词.doc
  19. linux系统启动设置mac,Apple表示新款Mac将阻止Linux启动
  20. 限界上下文(BC)是什么

热门文章

  1. java中的变量是什么_什么是java变量,java变量是什么
  2. 解决微信(扫码)无法直接下载apk的问题
  3. Portainer添加远程Docker(Docker API)
  4. P1443 马的遍历(洛谷)
  5. Unity 之 ShaderGraph Channel节点解析汇总
  6. [UNR #5]获奖名单
  7. django 下mailgun的使用
  8. Email邮件发送设置 工具开发整理(网易邮箱、Mailgun为例) 上篇
  9. spark+mongodb大数据框架搭建
  10. Android N Android O 默认MTP模式 实时文件扫描