计算机网络:发送一封邮件的图解过程

计算机网络:发送一封邮件的图解过程,第1张

主机A的处理

发送方从第7层、第6层到第1层由上至下按照顺序传输数据,而接收端则从第1层、第2层到第7层由下至上向每个上一级分层传输数据。每个分层上,在处理由上一层传过来的数据时可以附上当前分层的协议所必须的“首部”信息。然后接收端对收到的数据进行数据“首部”与“内容”的分离,再转发给上一分层,并最终将发送端的数据恢复为原状。

现在假设要发送一封电子邮件

应用层

从用户输入完所要发送的内容并点击“发送”按钮的那一刻开始,就进入了应用层协议的处理。该协议会在所要传送数据的前端附加一个 首部 (标签)信息。该首部标明了邮件内容为“早上好”和收件人为“B”。这一附有首部信息的数据传送给主机B以后由该主机上的收发邮件软件通过“收信”功能获取内容。

主机B上的应用收到由主机A发送过来的数据后,分析其数据首部与数据正文,并将邮件保存到硬盘或是其他非易失性存储器以备进行相应的处理。如果主机B上收件人的邮箱空间已满无法接收新的邮件,则会返回一个错误给发送方。对这类异常的处理也正属于应用层需要解决的问题。

主机A与主机B通过它们各自应用层之间的通信, 最终实现邮件的存储

表示层

表示层的“表示”有“表现”、“演示”的意思,因此更关注数据的具体表现形式。此外,所使用的应用软件本身的不同也会导致数据的表现形式截然不同。例如有的字处理软件创建的文件只能由该字处理器厂商所提供的特定版本的软件才来打开读取。

那么,电子邮件中如果遇到此类问题该如何解决呢?如果用户A与用户B所使用的邮件客户端软件完全一致,就能够顺利收取和阅读邮件,不会遇到类似的问题。但是这在现实生活当中是不大可能的。让所有用户千篇一律地使用同一款客户端软件对使用者来说也是极不方便的一件事情。

解决这类问题有以下几种方法。首先是利用表示层,将数据从“某个计算机特定的数据格式”转换为“网络通用的标准数据格式”后再发送出去。接收端主机收到数据以后将这些网络标准格式的数据恢复为“该计算机特定的数据格式”,然后再进行相应处理。

在前面这个例子中,由于数据被转换为通用标准的格式后再进行处理,使得异构的机型之间也能保持数据的一致性。这也正是表示层的作用所在。即 表示层是进行“统一的网络数据格式”与“某一台计算机或某一款软件特有的数据格式”之间相互转换的分层

此例中的“早上好”这段文字根据其编码格式被转换成为了“统一的网络数据格式”。即便是一段简单的文字流,也可以有众多复杂的编码格式。如果未能按照特定格式编码,那么在接收端就是收到邮件也可能会是乱码。

表示层与表示层之间为了识别编码格式也会附加首部信息,从而将实际传输的数据转交给下一层去处理

会话层

假定用户A新建了5封电子邮件准备发给用户B。这5封邮件的发送顺序可以有很多种。例如,可以每发一封邮件时建立一次连接,随后断开连接。还可以一经建立好连接后就将5封邮件连续发送给对方。甚至可以同时建立好5个连接,将5封邮件同时发送给对方。 决定采用何种连接方法是会话层的主要责任。会话层主要管理何时建立连接,何时发送数据。

会话层也像应用层或表示层那样,在其收到的数据前端附加首部或标签信息后再转发给下一层。而这些首部或标签中记录着数据传送顺序的信息。

传输层

主机A确保与主机B之间的通信并准备发送数据。这一过程叫做“建立连接”。有了这个通信连接就可以使主机A发送的电子邮件到达主机B中,并由主机B的邮件处理程序获取最终数据。此外,当通信传输结束后,有必要将连接断开。

如上, 进行建立连接或断开连接的处理,在两个主机之间创建逻辑上的通信连接即是传输层的主要作用 。此外, 传输层为确保所传输的数据到达目标地址会在通信两端的计算机之间进行确认,如果数据没有到达,它会负责进行重发

例如,主机A将“早上好”这一数据发送给主机B。期间可能会因为某些原因导致数据被破坏,或由于发生某种网络异常致使只有一部分数据到达目标地址

假设主机B只收到了“早上”这一部分数据,那么它会在收到数据后将自己没有收到“早上”之后那部分数据的事实告知主机A。主机A得知这个情况后就会将后面的“好”重发给主机B,并再次确认对端是否收到。

这就好比人们日常会话中的确认语句:“对了,你刚才说什么来着?”计算机通信协议其实并没有想象中那么晦涩难懂,其基本原理是与我们的日常生活紧密相连、大同小异的。

由此可见,保证数据传输的可靠性是传输层的一个重要作用。为了确保可靠性,在这一层也会为所要传输的数据附加首部以识别这一分层的数据。然而,实际上将数据传输给对端的处理是由网络层来完成的。

网络层

网络层的作用是在网络与网络相互连接的环境中,将数据从发送端主机发送到接收端主机 。如下图所示,两端主机之间虽然有众多数据链路,但能够将数据从主机A送到主机B也都是网络层的功劳。

在实际发送数据时,目的地址至关重要。这个地址是进行通信的网络中唯一指定的序号。也可以把它想象为我们日常生活中使用的电话号码。只要这个目标地址确定了,就可以在众多计算机中选出该目标地址所对应的计算机发送数据。

基于这个地址,就可以在网络层进行数据包的发送处理。而有了地址和网络层的包发送处理,就可以将数据发送到世界上任何一台互连设备。网络层中也会将其从上层收到的数据和地址信息等一起发送给下面的数据链路层,进行后面的处理。

数据链路层和物理层

通信传输实际上是通过物理的传输介质实现的。数据链路层的作用就是在这些通过传输介质互连的设备之间进行数据处理。

物理层中,将数据的0、1转换为电压和脉冲光传输给物理的传输介质,而相互直连的设备之间使用地址实现传输。这种地址被称为MAC地址,也可称为物理地址或硬件地址。采用MAC地址,目的是为了识别连接到同一个传输介质上的设备。因此,在这一分层中将包含MAC地址信息的首部附加到从网路层转发过来的数据上,将其发送到网络。

网络层与数据链路层都是基于目标地址将数据发送给接收端的,但是网络层负责将整个数据发送给最终目标地址,而数据链路层则只负责发送一个分段内的数据。

主机B的处理

接收端主机B上的处理流程正好与主机A相反,它从物理层开始将接收到的数据逐层发给上一分层进行处理,从而使用户B最终在主机B上使用邮件客户端软件接收用户A发送过来的邮件,并可以读取相应内容为“早上好”。

总结

在计算机网络中,发送数据经过了七层。

在发送端:

应用层负责把数据要发送的数据交给表示层。

表示层确定“我说的语言对方听得懂,让对方听得懂的方式是把数据转成某种格式。”,然后交给下一层。

会话层负责何时连接对方,何时发送,怎么发。

传输层负责建立连接,和我发的东西对方有没有都准确收到。

网络层负责发送到目的的地址。

数据链路层也负责发送,但是负责的是到下一站。

物理层负责把数据都转换成0和1,负责真正的在物理设备上传输。

icmp数据包封装在ip包数据段部分。在ip头的protocal中指定是什么类型的协议。当指定是imcp时ip协议进行处理,如选择重发或关闭连接等。因为ip协议本身是不可靠的协议,icmp用于传递控制消息。虽然icmp和tcp、udp都被打包成ip包传输,但是它们的功能完全不一样,所处的层次也不一样。

TCP/IP数据包的封装

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。

物理层规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的物理媒体。

在这一层,数据的单位称为比特(bit)。

属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V35、RJ-45等。

数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

在这一层,数据的单位称为帧(frame)。

数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。

网络层负责对子网间的数据包进行路由选择。网络层还可以实现拥塞控制、网际互连等功能。

在这一层,数据的单位称为数据包(packet)。

网络层协议的代表包括:IP、IPX、RIP、OSPF等。

传输层是第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。

在这一层,数据的单位称为数据段(segment)。

传输层协议的代表包括:TCP、UDP、SPX等。

会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。

表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。

应用层为 *** 作系统或网络应用程序提供访问网络服务的接口。

应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。

最近有用户手机用流量无法登陆app,最终发现原因是ip被防火墙拉黑了,本来想去了解ip的分配机制,随着一个个知识点的了解,发现还是系统记录下来更能加深理解,特此记录。

以太网络上面的传输使用网络卡卡号为基准的 MAC 讯框,配合 CSMA/CD 的标准来传送讯框,这就是硬件部分。在软件部分,我们知道 Internet 其实就是 TCP/IP 这个通讯协议的通称,Internet 是由 InterNIC所统一管理的, 但其实他仅是负责分配 Internet 上面的 IP 以及提供相关的 TCP/IP 技术文件而已。

当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图所示。

不论是服务器端还是客户端,都必须要透过一次 SYN 与 ACK 来建立联机,所以总共会进行三次的交谈

封包发起时,在 TCP 的表头当中,必须要带有 SYN 的主动联机(SYN=1),并且记下发送出联机封包给服务器端的序号 (Sequence number = 10001) 。

当服务器接到这个封包,并且确定要接收这个封包后,就会开始制作一个同时带有 SYN=1, ACK=1 的封包, 其中那个 acknowledge 的号码是要给 client 端确认用的,所以该数字会比(A 步骤)里面的 Sequence 号码多一号 (ack = 10001+1 = 10002), 那我们服务器也必须要确认客户端确实可以接收我们的封包才行,所以也会发送出一个 Sequence (seq=20001) 给客户端,并且开始等待客户端给我们服务器端的回应喔

目前IP有两个版本。 IPv4 (Internet Protocol version 4, 因特网协定第四版)和IPV6,目前运用最广泛的还是IPV4,所以下面讲的是IPV4。

我们知道 IP (Internet Protocol) 其实是一种网络封包,而这个封包的表头最重要的就是那个 32 位的来源与目标地址! 为了方便记忆,所以我们也称这个 32 bits 的数值为 IP 网络地址就是了。

IP 最小可以由 0000 一直到 255255255255 ,主要分为 Net_ID (网域号码)与 Host_ID (主机号码) 两部份。

在同一个网段内,Net_ID 是不变的,而 Host_ID 则是不可重复; Host_ID 在二进制的表示法当中,不可同时为 0 也不可同时为 1 , 因为全为 0 表示整个网段的地址 (Network IP) 而全为 1 则表示为广播的地址 (Broadcast IP)

在同一网域内,这些主机都可以透过 CSMA/CD 的功能直接在区网内用 广播 进行网络的联机。透过 路由器 (router) 来进行沟通才能将两个网域连结在一 起。

在 IPv4 里面就只有两种 IP 的类别,分别是:

私有 IP 也分别在 A, B, C 三个 Class 当中各保留一段作为私有 IP 网段,那就是:

用来达成子网的切分

如果我们以 19216800 ~ 1921680255 这个网段来说,要是给予 Net_ID 是 26 位时,总共分为几段呢? 因为 26-24=2 ,所以总共用掉两个位,因此有 2 的 2 次方,得到 4 个网段 。再将 256 个 IP 平均分配到 4 个网段去, 那我们就可以知道这四个网段分别是:

局域网络使用的设备-以太网络。

整个以太网络的重心就是 以太网络卡 。所以说,以太网络的传输主要就是 网络卡对网络卡之间的数据传递而已 。 每张以太网络卡出厂时,就会赋予一个独一无二的卡号,那就是所谓的 MAC (Media Access Control) 。

CSMA/CD 传送出去的 MAC帧 数据,其实就是 MAC !我们又简称网卡卡号为 MAC。

上图中的目的地址与来源地址指的就是网卡卡号 (hardware address, 硬件地址)

地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代

在发送数据包时,首先要通过目的IP(主机或路由器)获取局域网内要发送对象的MAC地址,再将MAC地址封装到数据包内发送。 而ARP的作用就在通过IP获取MAC地址,通过广播来发送ARP请求报文

假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:

(1) 主机A首先查看自己的 ARP表 ,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。

(2) 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后 以广播方式发送一个ARP请求报文 。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送, 该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理

(3) 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址 存入自己的ARP表中 。之后以 单播方式发送ARP响应报文给主机A ,其中包含了自己的MAC地址。

(4) 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。

NAT名字很准确,网络地址转换,就是 替换IP报文头部的地址信息 。NAT通常部署在一个组织的网络出口位置,通过将 内部网络IP地址替换为出口的IP地址 提供公网可达性和上层协议的连接能力。

一个对外的访问请求在到达目标以后,表现为由 本组织出口设备发起 ,因此被请求的服务端可将响应由Internet发回出口网关。出口网关再将 目的地址替换为私网的源主机地址 ,发回内部。这样一次由私网主机向公网服务端的请求和响应就在通信两端均无感知的情况下完成了。依据这种模型,数量庞大的内网主机就不再需要公有IP地址了。

路由器根据收到数据包中的 网络层地址 以及路由器内部维护的 路由表 决定输出端口以及下一跳地址,并且 重写链路层数据包头 实现 转发数据包 。路由器通过 动态维护路由表 来反映当前的网络拓扑,并通过网络上其他路由器 交换路由和链路信息 来维护路由表。

路由器的主要工作就是为经过路由器的每个数据帧寻找一条最佳传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即 路由算法 是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据―― 路由表 (RoutingTable),供路由选择时使用。

分级路由 广泛应用于互联网路由中,并且使用了多种路由协议。使用 DV(距离向量)算法 来查找节点间的最佳路由,在分级路由中,路由器被分成很多组,称为区域。每个路由器都 只有自己所在区域路由器的信息 ,而没有其他区域路由器的信息。所以在其路由表中,路由器只需要存储其他每个区域的一条记录。再使用 路由表转发最长匹配原则 进行数据分发。

关于路由查找的几个重点内容:

多数情况下,某主机决定向另一个主机发送数据,通过某些方法(如ARP)获得路由器的地址后,源主机发送指向该路由器的 物理(MAC)地址的数据包 ,其协议地址是指向目的主机的。

路由器查看了数据包的目的协议地址后,确定是否知道如何转发该包,如果路由器不知道如何转发,通常就将之丢弃。如果路由器知道如何转发,就 把目的物理地址变成下一跳的物理地址 并向之发送。下一跳可能就是 最终的目的主机 ,如果不是,通常为 另一个路由器 ,它将执行同样的步骤。当分组在网络中流动时,它的 物理地址在改变 ,但其 协议地址始终不变

路由器是 第三层网络设备 ,这样说大家可能都不理解,就先说一下集线器和交换机吧。 集线器工作在第一层(即物理层) ,它没有智能处理能力,对它来说,数据只是电流而已,当一个端口的电流传到集线器中时,它只是简单地将 电流 传送到其他端口,至于其他端口连接的计算机接收不接收这些数据,它就不管了。 交换机工作在第二层(即数据链路层) ,它要比集线器智能一些,对它来说,网络上的数据就是 MAC地址的集合 ,它能分辨出帧中的源MAC地址和目的MAC地址,因此可以在任意两个端口间建立联系,但是交换机并不懂得IP地址,它只知道MAC地址。路由器工作在 第三层(即网络层) ,它比交换机还要“聪明”一些,它能理解数据中的 IP地址 ,如果它接收到一个数据包,就检查其中的IP地址,如果目标地址是本地网络的就不理会,如果是其他网络的,就将数据包转发出本地网络。

上面介绍路由的转发,是说只替换MAC地址来进行转发,但IP却不会改变,这种转发在Internet内传播是没有问题的,因为IP都是公共IP。

但如果路由器是连接这局域网和外部网络,这是IP就不能通用了,必须经过NAT转换成外部网络IP。我们日常家用的路由器都是NAT模式, 先进行NAT(如地址转换、端口转换等),再根据路由表进行转发

如果看完联网上面介绍的知识点,对于这个标题其实就已经有了大概的答案了。重点还是在路由器上,由它执行数据发送。

ARP详解

NAT(地址转换技术)详解

路由表转发最长匹配原则

路由表

路由表的原理和作用

路由

一次完整的HTTP请求响应过程(很详细)

路由器转发规则

IP数据包经由路由转发的时候,源ip和目的IP是否改变

简单解释,默认没有划VLAN的情况下所有端口都属于VLAN1 也就是都是同一VLAN。这样当ARP寻址时候到交换机会记录是哪个端口学习到的MAC地址,如果记录了MAC直接进行转发。如果没有记录或者丢失交换机会在同一VLAN的每个端口进行泛洪查找此MAC地址。VLAN标记的作用是交换机与交换机的通信,例如trunk。VLAN的作用隔离广播域!!!!VLAN之间的转发还是需要使用3层设备。实质就是MAC地址是首要位置。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/12180341.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存