文章目录
- 首先进入HTTP阶段
- 协议栈阶段
- TCP阶段
- IP阶段
- MAC
- 网卡
- 交换机
- 路由器
- 抵达
首先进入HTTP阶段
1.解析对应的URL,访问一个对应的服务器xxx.com的一个文件index.html;
2 使用DNS查询对应的ip地址,通过DNS服务器进行查找
3 组装http报文,生成http报文请求
步骤1:解析URL,访问对应服务器的一个文件(index.html)
当我们需要访问一个特定的网站并获取其中的某个文件时,首先需要解析URL以获取服务器的主机名和文件路径。例如,假设我们的URL是https://www.example.com/index.html。解析该URL,我们可以获得以下信息:
协议(Protocol):https
主机名(Host):www.example.com
文件路径(Path):/index.html
步骤2:使用DNS查询对应的IP地址,通过DNS服务器进行查找
在我们知道主机名之后,需要将主机名解析为对应的IP地址,以便能够建立与服务器的网络连接。这一过程通常使用DNS(Domain Name System)完成。DNS是一个分布式的服务,将域名(如www.example.com)映射到对应的IP地址。我们将向本地系统配置的DNS服务器发送查询请求,该服务器将返回与主机名对应的IP地址。
步骤3:组装HTTP报文,生成HTTP请求报文
一旦我们获得了服务器的IP地址,我们可以建立TCP连接,并向服务器发送HTTP请求报文。HTTP请求报文是由客户端发送给服务器的消息,其中包含了与所需文件有关的信息和请求头。对于我们的例子,我们将发送一个GET请求来获取index.html文件。
HTTP请求报文包括以下主要部分:
请求行(Request Line):包含HTTP方法(GET/POST/PUT等),文件路径和协议版本。
请求头(Request Headers):包含关于请求的其他元数据,例如Accept、User-Agent、Host等。
请求体(Request Body):对于GET请求,通常为空。
组装好HTTP请求报文后,将其发送到服务器的IP地址,通过建立的TCP连接向服务器发送请求。服务器接收到请求后,将处理请求并返回相应的响应信息,包括所请求的文件的内容。
以上是在访问一个特定文件时的一般流程,涉及到URL解析、DNS查询和HTTP请求报文的生成与发送。
协议栈阶段
协议栈阶段 :协议栈内分为几个部分,分别承担不同的工作。网络应用程序通过socket库来指示操作系统的协议栈工作
其中,IP中还包括了ICMP和ARP协议,一个用来管理IP,一个用来询问MAC地址
协议栈是计算机网络中实现网络通信的软件模块集合。它由多个层次构成,每个层次都负责特定的功能和任务。常见的协议栈是TCP/IP协议栈,它包括了多个协议层,如应用层、传输层、网络层和数据链路层。
网络应用程序通过调用操作系统提供的socket库与协议栈进行交互,向协议栈发出请求和接收响应,以实现网络通信。socket库提供了一组API,使应用程序可以通过协议栈与其他计算机进行数据传输。
在协议栈的TCP阶段,建立TCP连接的过程通常使用三次握手(three-way handshake)。三次握手包括以下步骤:
第一次握手:客户端向服务器发送一个带有SYN(同步)标志的TCP报文段,表示客户端要建立连接。
第二次握手:服务器收到客户端的SYN报文段后,回复一个带有SYN/ACK(同步/确认)标志的报文段,表示可以建立连接。
第三次握手:客户端收到服务器的SYN/ACK报文段后,向服务器回复一个带有ACK标志的报文段,表示连接已建立。
通过三次握手,建立的TCP连接可以开始进行数据的可靠传输。
在IP协议中,确实包含了ICMP(Internet Control Message Protocol)和ARP(Address Resolution Protocol)这两个重要的子协议。
ICMP是用于在IP网络中发送错误报告、诊断和管理功能的协议。它提供了一种机制,可以向发送IP数据包的设备报告网络连接、数据包丢失、超时等方面的错误信息。
ARP是用于将IP地址映射到物理网络地址(如MAC地址)的协议。当设备需要发送数据包到另一个设备时,它需要知道目标设备的物理地址才能正确地传递数据包。ARP协议提供了一种机制,通过发送ARP请求广播来查询目标设备的物理地址,然后将其映射到发送设备的ARP缓存中,以便后续的通信。
这些协议在协议栈中各自扮演重要角色,确保网络通信的可靠性和正确性。
TCP阶段
来到TCP阶段,通过建立三次握手建立TCP连接
如果HTTP请求消息过长大于MSS长度,就需要分片
最后拆分完成后加上TCP的首部,在已经建立好的连接中进行数据传输
在建立好的TCP连接中进行数据传输时,如果HTTP请求消息的长度超过了最大分段长度(Maximum Segment Size,MSS),就需要对消息进行分片。
分片是将较大的数据包分割成较小的片段,以适应网络传输的要求。每个分片都会加上TCP的首部,以便在接收端重新组装数据。TCP首部包含了序列号、确认号、校验和等字段,用于确保数据的正确传输和有序接收。
在发送端,TCP会将消息分割为适当大小的分片,确保每个分片都不超过MSS的限制。然后,为每个分片加上TCP首部,并将它们发送到接收端。
在接收端,TCP会按照序列号将分片重新组装成原始的HTTP请求消息。TCP会使用确认号和序列号来追踪已接收的分片,并确保按照正确的顺序重新组装数据。
这样,即使HTTP请求消息很长,超过了MSS的限制,TCP仍然能够有效地传输数据,保证数据的完整性和有序性。使用分片和TCP的首部信息,可以在已经建立好的TCP连接中进行长消息的传输。
IP阶段
首先,根据网卡确定一个合适的IP地址
然后进行位于运算,计算出对应的子网掩码
生成一个IP的报文,然后加载TCP前面
生成一个IP报文前,需要先确定一个合适的IP地址。在IPv4网络中,IP地址由32位组成,通常用四个十进制数(0-255)表示,例如192.168.0.1。在选择IP地址时,需要确保与现有网络中的其他设备不冲突。可以使用DHCP(动态主机配置协议)自动获取可用的IP地址,或手动分配一个不与其他设备冲突的静态IP地址。
根据IP地址,再确定子网掩码。子网掩码用于划分网络中的网络主机和子网。它由32位二进制数字表示,其中连续的1表示网络部分,连续的0表示主机部分。子网掩码的大小决定了网络的子网数量和主机数量。常见的子网掩码有255.255.255.0(用于划分一个局域网)和255.255.0.0(用于划分一个较大的网络)等。
进行位与运算时,将IP地址和子网掩码进行逐位的与运算,可以得到网络地址。位与运算的规则是,对应位上的值如果都为1,则结果为1;否则,结果为0。例如,如果IP地址是192.168.0.1,子网掩码是255.255.255.0,进行位与运算后,得到的网络地址是192.168.0.0。
最后,加载TCP头部。TCP(传输控制协议)是一种用于可靠传输数据的协议。TCP报文包括源端口号、目的端口号、序列号、确认号等信息。加载TCP头部意味着在IP报文中添加TCP相关的信息,使得报文可以通过TCP协议进行传输。
综上所述,生成一个IP报文并加载TCP前面,需要先确定一个合适的IP地址,然后根据该地址确定子网掩码,最后在IP报文中添加TCP头部信息。
MAC
最后加上MAC头部
可以通过ARP获取对方的MAC地址
添加MAC头部和获取对方的MAC地址是在链路层进行的。在发送IP报文之前,需要通过ARP(地址解析协议)获取目标主机的MAC地址。
ARP用于将IP地址映射到MAC地址,以便在局域网中发送数据帧。当发送方需要将数据发送到某个目标IP地址时,首先会检查ARP缓存,看是否已经有目标IP地址对应的MAC地址。如果没有,就会发送一个ARP请求广播来询问局域网中的设备,谁拥有该IP地址对应的MAC地址。目标主机接收到ARP请求后,会向发送方回复一个ARP响应,包含自己的MAC地址。发送方将接收到的MAC地址保存在ARP缓存中,供以后的通信使用。
一旦获得目标主机的MAC地址,就可以在生成的IP报文前添加以太网的MAC头部。MAC头部包含发送方和接收方的MAC地址,以及以太网帧类型等信息。将IP报文与MAC头部组合起来,形成完整的数据帧,然后通过以太网进行发送。
总结,要完成生成一个IP报文并加载TCP、MAC头部的过程,除了确定IP地址、计算子网掩码和加载TCP头部外,还需要通过ARP获取目标主机的MAC地址,并将MAC头部添加到数据帧中。这样才能完成数据的封装和发送。
网卡
将数字信息转化为欸电信号,才能在网上传输
控制网卡的是网卡驱动程序
网卡将信息转化为电信号最后发送出去
确实,将数字信息在网络上传输需要将其转化为电信号。这个转换的过程由网卡(网络适配器)完成。网卡是计算机连接到网络的硬件设备,它负责在计算机和网络之间传输数据。
网卡驱动程序是控制网卡工作的软件程序。操作系统通过网卡驱动程序与网卡进行通信,控制其发送和接收数据。驱动程序将数字信息转化为适合在物理媒介上传输的电信号,并通过网线或其他网络介质将信号发送到目标设备。
在数据发送的过程中,网卡使用物理层和数据链路层协议来处理数据转换和传输。物理层协议定义了电信号的传输方式,例如在以太网中使用的双绞线传输。数据链路层协议则负责将数据分成帧,并在每个帧中添加头部和尾部信息,以支持数据的可靠传输。
一旦网卡将数字信息转化为电信号并发送出去,接收方的网卡会接收并解析电信号,将其转化回数字信息,并交给上层协议进行处理,最终传递给应用程序。
综上所述,网卡驱动程序控制网卡的工作,将数字信息转化为电信号,并通过物理媒介将信号发送到目标设备,从而实现在网络中的数据传输。
交换机
交换机本身不具有MAC地址
交换机记录着MAC地址表和对应的端口
对于以太网交换机来说,它是一个数据链路层设备,用于在局域网内的设备之间转发以太网帧。交换机具有物理地址,即MAC地址,用于标识交换机自身。
虽然交换机本身有一个MAC地址,但是它的主要功能是维护一个MAC地址表(也称为转发表或CAM表),记录着与交换机连接的各个设备的MAC地址和相应的端口号。这个表中的条目会随着网络流量的传输和设备的连接和断开而动态更新。
当交换机接收到一个以太网帧时,它会先检查帧中的目标MAC地址。如果目标MAC地址在交换机的MAC地址表中存在,交换机就会查找相应的端口号,并将帧转发到对应的端口。这称为“MAC地址学习”。
如果目标MAC地址未在交换机的MAC地址表中找到,交换机会将帧广播到所有其他端口(除了接收该帧的端口)。这样,目标设备就能收到该帧并回复一个响应,从而交换机可以学习到目标MAC地址和端口的映射关系,并更新MAC地址表。
通过维护MAC地址表,交换机能够基于MAC地址进行帧的转发,实现了数据的按需传输,提高了网络的效率和安全性。
路由器
首先根据路由器网关列判断对方地址
通过控制平面(SDN)转发
多次转发后最终到达目的地
对于路由器而言,它是一种网络设备,用于在不同网络之间转发数据。路由器不同于交换机,因为它工作在网络层,能够根据IP地址来进行数据的转发。
在数据传输之前,首先需要根据路由器的网关配置信息来确定数据的目标地址。网关是路由器所连接网络的出口,也是将数据发送到另一个网络的起点。当路由器收到一个数据包时,它会使用路由表来判断下一跳的路径,即确定数据包应该通过哪个接口转发出去。
控制平面(SDN)是一种网络架构,它将网络控制和管理功能集中在一个可编程的控制器中。使用SDN时,路由器的转发行为由集中式的控制器进行管理。控制器根据网络策略和拓扑信息,向路由器下发路由规则,指示路由器如何转发数据包。这样,路由器根据控制平面提供的转发策略来进行数据的转发操作。
数据在路由器中经过多次转发,每个路由器根据自己的路由表将数据包转发到下一个目标。通过这种逐跳转发的方式,数据最终能够到达目的地网络。每个路由器在转发过程中会更新数据包的目标MAC地址和下一跳IP地址,使其沿着正确的路径向目的地前进。
综上所述,路由器通过确定目标地址、使用控制平面进行转发以及多次逐跳转发的方式,将数据从源网络转发到目的网络。这样实现了不同网络之间的连通性和数据传输。
抵达
从外到内拨,一个一个拆
挨个核对,当完全是自己想要的就接收
收完成后发动TCP四次挥手,断开了
当从外部到内部进行网络通信时,可以按照以下步骤逐个核对和处理,直到获得所需数据并进行接收:
建立物理连接:通过物理介质(如以太网)建立网络连接,确保数据可以在发送和接收设备之间传输。
IP层处理:在网络层(IP层),对数据包进行分组和路由,根据目标IP地址决定数据包的下一跳位置。
ICMP协议:如果出现网络错误或异常情况,ICMP协议可能会生成错误报告或其他控制信息,并将其返回给发送设备。
ARP协议:如果目标设备的物理地址未知,发送设备可能会向网络上广播ARP请求以查询该地址。目标设备将通过ARP响应将其物理地址发送回发送设备,以建立数据链路层的通信。
TCP协议:建立TCP连接时,需要进行三次握手,确保双方都同意建立连接并同步初始序列号。
接收数据:在建立连接之后,接收设备可以开始接收发送设备发送的数据包,并在接收缓冲区中存储接收到的数据。
TCP四次挥手:当数据传输完毕后,发送设备和接收设备之间可以通过四次挥手的方式来结束TCP连接。这包括发送设备发送FIN(结束)报文段,接收设备确认并发送自己的FIN报文段,以及最后的确认,从而完成连接的关闭过程。
通过按照这些步骤逐个处理和核对,可以确保网络通信的可靠性并获得所需的数据。一旦数据传输完成,可以通过TCP的四次挥手来正确地断开连接。