计算机网络入门(网络协议篇)

news2025/1/11 0:28:54

计算机网络分类

虽然网络类型的划分标准各种各样,但是从地理范围划分是一种大家都认可的通用网络划分标准。按这种标准可以把各种网络类型划分为局域网、城域网、广域网三种。局域网一般来说只能是一个较小区域内,城域网是不同地区的网络互联,不过在此要说明的一点就是这里的网络划分并没有严格意义上地理范围的区分,只能是一个定性的概念。

  • LAN(Local area Network, 局域网):连接范围窄、用户数少、配置容易、连接速率高。目前局域网最快的速率要算现今的10G以太网了。IEEE的802标准委员会定义了多种主要的LAN网:以太网(Ethernet)、令牌环网(Token Ring)、光纤分布式接口网络(FDDI)、异步传输模式网(ATM)以及最新的无线局域网(WLAN)

  • MAN(Metropolitan Area Network;城域网):多采用ATM技术做骨干网。ATM是一个用于数据、语音、视频以及多媒体应用程序的高速网络传输方法。ATM的最大缺点就是成本太高,所以一般在政府城域网中应用,如邮政、银行、医院等。

  • WAN(Wide Area Network, 广域网) :也称为远程网,所覆盖的范围比城域网(MAN)更广,它一般是在不同城市之间的LAN或者MAN网络互联,地理范围可从几百公里到几千公里。因为距离较远,信息衰减比较严重,所以这种网络一般是要租用专线,通过IMP(接口信息处理)协议和线路连接起来,构成网状结构,解决循径问题。

互联网协议

协议,又称网络协议网络传输协议(communication protocol),是一套用于确定数据如何在同一网络中的不同设备之间进行传输的既定规则。只能当双方都遵循同一个规则后才可以实现通信交流。计算机网络学习的核心内容就是网络协议的学习。

为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了"开放系统互联参考模型",即著名的OSI/RM模型(Open System Interconnection/Reference Model)。除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议等。

网络体系结构

协议

主要用途

TCP/IP

HTTP、SMTP、TELNET、IP、ICMP、TCP、UDP 等

主要用于互联网、局域网

IPX/SPX

IPX、NPC、SPX

主要用于个人电脑局域网

AppleTalk

AEP、ADP、DDP

苹果公司现有产品互联

TCP/IP四层模型与OSI体系结构对比

1. OSI 标准模型 (Open System Interconnection)

OSI模型将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。其中第四层完成数据传送服务,上面三层面向用户。

1.1 物理层(Physical Layer)

激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。物理层记住两个重要的设备名称,中继器(Repeater,也叫放大器)集线器

  • 中继器(Repeater):又被称为转发器或放大器,用于互连两个相同类型的网段,主要功能是延伸网段和改变传输媒体,从而实现信息位的转发。它本身不执行信号的过滤功能。

  • 集线器(hub):是一种典型或称为特殊的转发器。它的作用可以简单的理解为将一些机器连接起来组成一个局域网。它不具有智能处理能力,处理的数据只是电流而已,它采用共享带宽的工作方式,附接端口的所有计算机采用CSMA/CD方式竞争带宽的使用, 任一时刻只能由两台计算机之间进行通信

1.2 数据链路层(Data Link Layer)

  • 数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。

  • 将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位

  • 控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配

  • 在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。数据链路层在不可靠的物理介质上提供可靠的传输

  • 该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

  • 主要的协议:以太网协议;

  • 两个重要设备名称:网桥(Gate Bridge)交换机(Switch)

1.3 网络层(Network Layer)

  • 网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。如果您想用尽量少的词来记住网络层,那就是"路径选择、路由及逻辑寻址"。

  • 网络层中涉及众多的协议,其中包括最重要的协议,也是TCP/IP的核心协议——IP协议。IP协议非常简单,仅仅提供不可靠、无连接的传送服务。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP这些协议。

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

  • 网络层基本数据单位为IP数据报

  • 网络层重要的设备:路由器(Router)

1.4 传输层(Transport Layer)

  • 传输层是第一个端到端,即主机到主机的层次。

  • 传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题

  • 在传输层,信息传送的协议数据单元称为段或报文 网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口

  • 传输层包含的主要协议:TCP协议(Transmission Control Protocol,传输控制协议)、UDP协议(User Datagram Protocol,用户数据报协议)

  • 重要设备:网关(Gateway)

1.5 会话层

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

1.6 表示层

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

1.7 应用层

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

  • 会话层、表示层、应用层数据传输基本单位为报文

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

2. TCP/IP协议

TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议传输层的TCP协议组成通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。IP是给因特网的每一台联网设备规定一个地址。

  • IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是否按顺序发送的或者有没有被破坏,IP数据包中含有发送它的主机的地址(源地址)接收它的主机的地址(目的地址)

  • TCP面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。TCP提供的是一种可靠的数据流服务,采用"带重传的肯定确认"技术来实现传输的可靠性。TCP还采用一种称为"滑动窗口"的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。

2.1 TCP/IP 协议簇

在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。他们与 TCP 或 IP 的关系紧密,是互联网必不可少的组成部分。TCP/IP 一词泛指这些协议,因此,有时也称 TCP/IP 为网际协议群

2.2 TCP协议

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

  • 面向连接的运输协议

  • 每一条TCP连接只能有两个端点,一对一

  • TCP提供可靠的交付

  • TCP提供全双工,TCP连接的两端都接收发送缓存和接收缓存。

  • 面向字节流

TCP发送报文的方式也和UDP不同,TCP不关心应用进程一次把多长的报文发送到TCP缓冲中,而是根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段含多少个字节。如果数据太长,TCP可以划分短一些再发送,如果数据太短,TCP可以等待积累到足够长再发送。

2.2.1 TCP报文

TCP一个报文段分为首部数据部分,而TCP的全部功能都体现在它首部中各个字段的作用

  • 16位源端口号:16位的源端口中包含初始化通信的端口。源端口和源IP地址的作用是标识报文的返回地址。

  • 16位目的端口号:16位的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接口。

  • 32位序号:32位的序列号由接收端计算机使用,重新分段的报文成最初形式。当SYN出现,序列码实际上是初始序列码(Initial Sequence Number,ISN),而第一个数据字节是ISN+1。这个序列号(序列码)可用来补偿传输中的不一致。

  • 32位确认序号:32位的序列号由接收端计算机使用,重组分段的报文成最初形式。如果设置了ACK控制位,这个值表示一个准备接收的包的序列码。确认号为N,则说明到序号N-1为止的所有数据都已正确接收到

  • 4位首部长度:4位包括TCP头大小,指示何处数据开始。

  • 保留(6位):6位值域,这些位必须是0。为了将来定义新的用途而保留。

  • 标志:6位标志域。表示为:紧急标志、有意义的应答标志、推、重置连接标志、同步序列号标志、完成发送数据标志。按照顺序排列是:URG、ACK、PSH、RST、SYN、FIN

  • 16位窗口大小:用来表示想收到的每个TCP数据段的大小。TCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。窗口大小是一个16字节字段,因而窗口大小最大为65535字节。

  • 16位校验和:16位TCP头。源机器基于数据内容计算一个数值,收信息机要与源机器数值 结果完全一样,从而证明数据的有效性。检验和覆盖了整个的TCP报文段:这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证的。

  • 16位紧急指针:指向后面是优先数据的字节,在URG标志设置了时才有效。如果URG标志没有被设置,紧急域作为填充。加快处理标示为紧急的数据段。

  • 选项:长度不定,但长度必须为1个字节。如果没有选项就表示这个1字节的域等于0。

  • 数据:该TCP协议包负载的数据。

  • 在上述字段中,6位标志域的各个选项功能如下。

  • URG紧急标志。紧急标志为"1"表明该位有效。

  • ACK确认标志。表明确认编号栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。仅当ACK=1时确认号字段有效,当ACK=0,确认号无效。TCP规定,在连接建立后所有传送的报文端ACK都等于1

  • PSH推标志。该标志置位时,接收端不将该数据进行队列处理,而是尽可能快地将数据转由应用处理。在处理Telnet或rlogin等交互模式的连接时,该标志总是置位的。

  • RST:复位标志。用于复位相应的TCP连接。

  • SYN:同步标志。表明同步序列编号栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。在这里,可以把TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。通过TCP连接交换的数据中每一个字节都经过序列编号。在TCP报头中的序列编号栏包括了TCP分段中第一个字节的序列编号。SYN在连接建立时来同步序号,当SYN=1而ACK=1时,表明这是一个连接请求报文端。对方如果同意建立连接,则应在响应的报文段使用SYN=1和ACK=1。因此SYN置为1则是一个连接请求或连接接收报文

  • FIN:结束标志FIN=1时,表示该报文段的发送放的数据传输完毕,要求释放连接

TCP在建立连接的时候,就可以确定发送数据包的单位MSS(Maximum Segment Size), MSS是每一个TCP报文段中的数据字段的最大长度。 (注意,不是整个TCP报文段的最大长度)。TCP在传输大量数据的时候,是以MSS大小将数据进行分割发送的,重传时也是以MSS为单位。

为什么要设计一个MSS呢? 我们知道,TCP报文端的数据部分,至少还要加上40字节的首部(20字节TCP头+20字节IP头),如果选择了很小的MSS长度,比如只有一个字节的数据,却要封装上40字节的头,那么网络的利用率就很低了。但是如果设置得非常大,在IP层传输时就可能被拆分成多个数据片,在终点还要重新拼接,传输出错时还要重传,这样也会使得开销增大。 理想状态下是MSS正好是IP不会分片的最大数据长度。 (但是很难达到)

MSS是在TCP连接建立时,由两边的主机计算出来的:两端的主机都会将自己能够支持的MSS写入。 如果没有指定,就是默认的536字节长。

2.2.2 TCP的连接

TCP连接的端口叫做Socket套接字或插口。 根据RFC793的定义,端口号拼接到IP地址就是套接字。

套接字socket = (ip地址:端口号)
  • TCP连接建立过程:【三次握手】

  1. 第一次握手🤝:客户端Client发送连接请求(SYN报文,将seq置为x),发送完毕后客户端Client进入SYN_SEND(同步已发送)状态。

  1. 第二次握手🤝: 服务器Server收到SYN报文,向客户端发送SYN+ACK报文, seq置为y,ack置为x+1. 发送后客户端Client进入SYN_RCVD状态

  1. 第三次握手🤝:客户端Client收到SYN+ACK报文后,明白两方收发都没有问题。但还需要向服务器发送ACK报文,ack置为y+1,seq置为x+1

  • TCP连接断开过程:【四次挥手】

  1. 第一次挥手👋:客户端Client发送连接释放报文,并停止再发送数据,主动关闭TCP连接。 FIN=1,seq=u 发送完后进入FIN-WAIT-1 状态

  1. 第二次挥手👋:服务器Server接收到后发出确认,ACK=1,seq=v,ack=u+1然后进入CLOSE_WAIT状态。(此时TCP连接处于半关闭状态,服务器Server到客户端Client的连接还未关闭,因为此时服务器可能还有数据需要传给客户端。客户端接受到确认后,进入FIN-WAIT-2状态。)

  1. 第三次挥手👋:数据传输完后,服务器Server发出连接释放的报文。FIN=1,ACK=1,seq=w,ack=u+1, 发送完后进入LAST-ACK(最后确认)状态。

  1. 第四次挥手👋:客户端Client收到后,将发出确认,ACK=1,ack=w+1,seq=u+1,发送完后将进入TIME-WAIT状态。(此时TCP连接还没释放掉,而是等到时间计时器(TIME-WAITtimer)设置的时间2MSL后,认为服务器Server已经接收到了报文,客户端才进入CLOSED状态。 服务器接收到后,比客户端先进入了CLOSED状态。)

Q:为什么需要三次握手?而不是两次握手?
A:这是为了防止 已失效的连接请求报文突然又到达服务器。什么叫做“已失效的报文”?假设客户端发出了一个连接请求报文,这个报文因为在网络中滞留的时间太长了,在这个过程中,A因为未收到确认,而重传了一次新的报文并且建立了连接,而后这个报文终于又到达了服务器这里,服务器误认为客户端又想建立连接,便同意连接,如果没有第三次握手,那么服务器就浪费了许多资源白白等待客户端。

Q:为什么TIME-WAIT要等待2MSL,才进入CLOSED状态?
A: MSL指的是报文在网络中最大的生存时间。
①、保证客户端发送的 最后一个ACK报文能到达服务器,这个报文可能会丢失,导致处于LAST-ACK的服务器接收不到,此时服务器Server会重新发送FIN+ACK报文,而2MSL时间内客户端就会收到这个报文,接着重传一次ACK报文,重新启动2MSL计时器。直到客户端和服务器都正常进入CLOSED状态。
②、防止 已失效的连接请求报文出现在本连接中。和上面三次握手是一个道理的。经过2个MSL,使本次连接产生的所有报文段都消失在网络中,使下一个新连接不会出现这种旧的连接报文。

Q:四次挥手能否变成三次挥手
A:是可能的,TCP是全双工通信,Client 发送FIN信号告知Server,这边已经终止了对Server传输,Server还可以继续往Client这边发送数据包,但是如果Server也没有数据发送给Client了,那么 对Client的ACK包和Server自己的FIN包合并成一个包发送过去,这样就可以变成三次了。

2.3 UDP协议

User Datagram Protocol 用户数据报协议,面向无连接的通讯协议,UDP数据包括目的端口号源端口号信息,由于通讯不需要连接,所以可以实现广播发送

  • UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。

  • UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。

  • 每个UDP报文分UDP报头UDP数据区两部分。报头由四个16位长(2字节)字段组成,分别说明该报文的源端口、目的端口、报文长度以及校验值。UDP报头由4个域组成,其中每个域各占用2个字节,具体如下:(1)源端口号;(2)目标端口号;(3)数据报长度;(4)校验值。

  • 使用UDP协议包括:TFTP(简单文件传输协议)、SNMP(简单网络管理协议)、DNS(域名解析协议)、NFS、BOOTP

  • TCP 与 UDP 的区别:TCP是面向连接的,可靠的字节流服务;UDP是面向无连接的,不可靠的数据报服务。

3. IP(Internet Protocol)网际互连协议

  • IP是整个TCP/IP协议族的核心,也是构成互联网的基础,IP位于TCP/IP模型的网络层

  • 根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。

  • IP主要包含三方面内容:IP编址方案分组封装格式分组转发规则

  • 在传送IP信息包时,一定会指明源地址与目的地址。源地址当然只有一个,但是目的地址却可能代表单一或多部设备。根据目的地址的不同,区分为3种传送方式:单点传送广播传送以及多点传送

3.1 协议版本

  • IPv4:32位IP地址

  • IPv6:128位表示IP地址,其表示为8组4位16进制数,中间为“:”分隔。比如,AB32:33ea:89dc:cc47:abcd:ef12:abcd:ef12

3.2 IP地址

3.2.1 IP地址结构

IP地址是用来识别网络上的设备,因此,IP地址是由网络地址与主机地址两部分所组成。

  • 网络地址:可用来识别设备所在的网络,网络地址位于IP地址的前段。当组织或企业申请IP地址时,所获得的并非IP地址,而是取得一个唯一的、能够识别的网络地址。同一网络上的所有设备,都有相同的网络地址。IP路由的功能是根据IP地址中的网络地址,决定要将IP信息包送至所指明的那个网络。

  • 主机地址:主机地址位于IP地址的后段,可用来识别网络上设备。同一网络上的设备都会有相同的网络地址,而各设备之间则是以主机地址来区别。由于各个网络的规模大小不一,大型的网络应该使用较短的网络地址,以便能使用较多的主机地址;反之,较小的网络则应该使用较长的网络地址。为了符合不同网络规模的需求,IP在设计时便根据网络地址的长度,设计与划分IP地址。

3.2.2 五种地址等级

在设计IP时,着眼于路由与管理上的需求,因此制定了5种IP地址的等级。不过,一般最常用到的便是A、B、C类这三种等级的IP地址。5种等级分别使用不同长度的网络地址,因此适用于大、中,小型网络。IP地址的管理机构可根据申请者的网络规模,决定要赋予哪种等级。

  • A类地址以0开头,第一个字节作为网络号,地址范围为:0.0.0.0~127.255.255.255;(modified @2016.05.31)

  • B类地址以10开头,前两个字节作为网络号,地址范围是:128.0.0.0~191.255.255.255;

  • C类地址以110开头,前三个字节作为网络号,地址范围是:192.0.0.0~223.255.255.255。

  • D类地址以1110开头,地址范围是224.0.0.0~239.255.255.255,D类地址作为组播地址(一对多的通信);

  • E类地址以1111开头,地址范围是240.0.0.0~255.255.255.255,E类地址为保留地址,供以后使用。

注:只有A,B,C有网络号和主机号之分,D类地址和E类地址没有划分网络号和主机号。

4. ARP/RARP协议

4.1 ARP协议

  • ARP(Address Resolution Protocol)地址解析协议,是根据IP地址获取MAC物理地址的一个TCP/IP协议。用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址。

  • ARP工作方式:主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

  • ARP欺骗:ARP是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。

  • ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。

ARP工作流程

主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;

主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;

当主机A要与主机B通信时,ARP协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:

  1. 根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。

  1. 如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。

  1. 主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。

  1. 主机B将包含其MAC地址的ARP回复消息直接发送回主机A。

  1. 当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

4.2 RARP逆地址解析协议

  • RARP功能和ARP协议相对,其将局域网中某个主机的物理地址转换为IP地址

  • 比如局域网中有一台主机只知道物理地址而不知道IP地址,那么可以通过RARP协议发出征求自身IP地址的广播请求,然后由RARP服务器负责回答

RARP协议工作流程

  1. 给主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;

  1. 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;

  1. 如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用;

  1. 如果不存在,RARP服务器对此不做任何的响应;

服务器访问实例

现在假设如果我们在客户端(客户端)浏览器中输入 http://www.baidu.com, 而 baidu.com 为要访问的服务器,下面详细分析客户端为了访问服务器而执行的一系列关于协议的操作:

  1. 客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层

  1. 在客户端的传输层,把HTTP会话请求分成报文段,添加目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层(网络层)的IP地址查找目的端。

  1. 客户端的网络层不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。

  1. 客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。

References

计算机网络基础知识总结 | 菜鸟教程

转发器、集线器、网桥、交换机、路由器和网关简介 -CSDN

TCP/IP协议簇概述 -51CTO博客

TCP协议详解 -CSDN

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/194090.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是进取心?如何提高进取心?

1、什么是进取心?进取心是一种心理状态,说的是积极上进,不断对自己提高要求,促使自己持续发展的心态。不论是学习还是工作,进取心都是我们获取成就的必备。从人的一生来说,进取心是我们探索人生最宝贵的修养…

ADB 开启 USB调试后,无法自动弹出调试授权窗口的解决方法

之前介绍了 Android Device Unauthorized 的解决方案,这次将分享 开启 USB调试后,无法自动弹出调试授权窗口的解决方法。即使选择在 “仅充电” 的情况下去调试,结果都一样。 在我自己的工程机 (荣耀系列的) 连上电脑后,USB 连接方…

《深入浅出计算机组成原理》学习笔记 Day18

冒险和预测(二)1. NOP 操作和指令对齐2. 操作数前推参考1. NOP 操作和指令对齐 MIPS 体系结构下的 R、I、J 三类指令: 五级流水线“取指令(IF)— 指令译码(ID)— 指令执行(EX&…

linux_进程间通信 IPC

文章目录1、管道1.1、匿名管道1.2、有名管道2、信号3、共享内存3.1、共享内存接口3.1.1、生成 key 值3.1.2、创建共享内存3.1.3、创建共享内存映射3.1.4、解除共享内存映射3.1.5、修改共享内存属性3.2、例:共享内存4、信号量4.1、信号量的接口4.1.1、创建信号量4.1.…

第二章 RISC-V 指令集架构

前言 提醒:全文10千字,预计阅读时长15分钟;读者:对 RISC-V 架构感兴趣的小伙伴;目的:读者利用15~30 分钟对本文沉浸式阅读理解,能够掌握 RISC-V 架构 80% 的要点;关键词 &#xff1a…

Mysql 高级学习笔记

Mysql 高级学习笔记 文章目录Mysql 高级学习笔记一、Mysql 基础1. 聚合函数2. having3. sql 的执行顺序4. 约束5. 试图二、Mysql 高级1. MySQL中的SQL的执行流程2. 存储引擎介绍2. 索引3. 性能分析工具的使用4. 索引优化与查询优化5、关联查询优化6、事务及日志6、MVCC一、Mysq…

【C++】从0到1入门C++编程学习笔记 - 提高编程篇:STL常用容器(deque容器)

文章目录一、deque容器基本概念二、deque构造函数三、deque赋值操作四、deque 大小操作五、deque 插入和删除六、deque 数据存取七、deque 排序一、deque容器基本概念 功能: 双端数组,可以对头端进行插入删除操作 deque与vector区别: vec…

【Python】在代码中执行终端命令并获取输出和运行状态

文章目录0 前言1 os库1.1 os.system1.2 os.popen2 subprocess库2.1 subprocess.run2.2 subprocess.Popen3 参考链接0 前言 在Python编程过程中,我们可能会遇到需要在终端命令行执行某个命令并获取其输出的操作,我们首先想到可能就是C语言中的system(&quo…

字节青训营——分布式学习笔记

1. 分布式事务 满足ACID(原子性、一致性、隔离性、持久性)的一组操作,可以被称为一个事务。 同样的,分布式事务也部分遵循 ACID 规范: 原子性:严格遵循一致性:事务完成后的一致性严格遵循&am…

超详细域名备案+阿里云服务器配置+小程序开发(简略)+前后端分离(简略)

文章目录前言一、试水环节(配置阿里云服务器环境)二、购买域名及备案1.购买域名2.域名备案3.域名解析4.白嫖SSL证书5.在网站上链接备案号三、设置微信小程序开发的权限四、安装微信小程序开发的工具五、前后端分离(简略)总结前言 …

RPA自动化办公06——Uibot中的UB编程语言基础

参考:UB语言参考_UiBot开发者指南 虽然Uibot用命令就行,但是编程习惯会让程序员们更喜欢看源代码,有时候写源代码会更加方便,所有要学习UB的语言基础。 它很简单,和Python很像,下面简单了解一个各种基础语…

美团:前景乐观但风险巨大

来源:猛兽财经 作者:猛兽财经 增长势头强劲,已经扭亏为盈 过去几年,美团(03690)的收入一直在以两位数的速度在增长。 这一增长势头,到了2022年还在延续(美团的收入在2022年仍保持…

kob配置git环境与项目创建

配置git环境 1.安装Git Bash 如果是使用Linux和mac可以跳过第一步操作,如果使用windows需要安装Git Bash:Git Bash传送门安装过程中所有配置按照默认即可; 2.配置Git环境 2.0 创建秘钥:使用命令:“ssh-keygen”生成秘钥&#…

【Java基础】多线程学习

1.多进程和多线程 多进程: 是指操作系统能同时运行多个任务(程序)。 多线程: 是指在同一程序中有多个顺序流在执行。 实现: 在java中要想实现多线程,有两种手段,一种是继承Thread类&#xff…

1、环境安装

目录一、vscode插件二、设置代理GOPROXY三、gopls1 - vscode弹出插件支持安装2 - LSP3 - gopls四、vscode设置一、vscode插件 vscode插件商店 Go Team at Google:让vscode关联上go语言的开发环境 Outline Map:更好的代码大纲 二、设置代理GOPROXY…

操作系统进程同步

文章目录操作系统进程同步一.进程同步的基本概念1.两种形式的制约关系2.临界资源(critical resource)3.临界区(critical section)4.同步进制遵循的原则二.硬件同步机制1.关中断2.Test-and-Set 指令3.Swap指令实现进程互斥三.信号量…

mysql-视图的定义和简单使用

mysql-视图视图1. 视图的定义2.视图的创建规则和使用限制小结视图 1. 视图的定义 视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。 视图的一些常见应用: 重用SQL语句。 简化复杂的SQL操作。在编写查询后,可以…

c语言之链表

今天来介绍一下c语言如何手写一个单向链表,我们都知道链表是用来提高空间的利用效率的数据结构,其中包括了一个数据域和指针域,数据域用来存储数据,指针域用来指向下一个节点。数据结构如下 我们都知道数据结构最主要的是他的增删…

从底层入手搞定C++引用和内联函数

C引用和内联函数 文章目录C引用和内联函数一、引用1.1引用的概念1.1.1代码展示1.1.2图示1.2引用的特性1.3常引用1.4引用的使用场景1.5 传值、传引用效率比较1.6 引用和指针的区别二、内联函数2.1.内联函数的概念2.2内联函数的特性总结一、引用 首先我们来看一下引用的概念&…

每天10个前端小知识 【Day 2】

前端面试基础知识题 1. arguments 这种类数组&#xff0c;如何遍历类数组&#xff1f; for(var i 0, len arrayLike.length; i < len; i) { …… }使用ES6的 … 运算符&#xff0c;我们可以轻松转成数组。 function func(...arguments) { console.log(arguments); // […