前端基本网络协议知识整合

一、ICMP协议
ICP(Internet Control Protocol)的别名为 Internet 控制消息协议,在 IPv4 协议家族中扮演着重要角色。该子 protocol 负责在 IP 主机及路由器之间传输 control messages。这些 control messages 虽然并不包含 user data,在某些场景下仍然发挥着关键作用。然而,在多数情况下它们不会直接参与数据传输过程。相比之下,在其他 transport layer protocols(如 TCP 和 UDP)中所承担的功能则完全不同。需要注意的是,在 ICMP 框架下必须嵌套 IP 头部字段才能确保通信的有效性。
Ping方式测试是否能够连通目标主机的响应成功结果如图所示:

二、ARP协议
ARP(Address Resolution Protocol, 地址解析协议)的主要功能是负责将一个已确定的IP地址成功地转换为对应的MAC地址,并使交换机能够基于此MAC地址进行数据传输

例如:
通过发送数据到PC2前,必须确定其IP地址对应的MAC地址是什么;此时则需发起ARP广播请求来完成这一过程。
- 主机 PC1 意图将数据传输至目标主机 PC2。
它将通过查阅自身存储于内存中的 ARP 缓存信息来完成这一操作。
ARP 缓存信息作为主机内存中的重要数据结构,
存储着 IP 地址与其对应 MAC 地址之间的映射关系。
经过查阅发现,在 PC1 的 ARP 缓存记录中未找到与 PC2 对应的 MAC 地址。
此时,PC1会执行ARP请求过程(发送出去一个ARP请求广播),用于探测目的地的MAC地址。这个ARP请求成为以目的地址为MAC广播地址(全端口 MAC 地址 FF:FF:FF:FF:FF:FF)的广播帧。从而确保所有的设备都能够接收到该 ARP 请求。
当主机接收到来自网络的数据帧时
5、在接收一个回应的数据帧之后,在本地将该ARP记录保存到ARP表中,并完成此操作后即可实现向PC2发送数据
三、TCP协议
TCP将连接视为最基础的对象,并将每个连接定义为其两端点之间的关系。每个TCP连接都由两个端点组成,在网络术语中我们将其称为"套接字"(socket)。它的定义是将端口号附加到IP地址上形成了套接字。例如,在此情况下若IP地址为192.3.4.16 而端口号为80,则由此可得对应的套接字为192.3.4.16:80
TCP协议将大量数据划分为多个片段以方便传输,并确保信息完整无误地送达对方。此外,在TCP连接的作用下类似于两条专用通道(一条从服务器到客户端另一条从客户端到服务器)。其中管道内部的数据传输通过字节码依次传递,并且整个过程是按顺序进行的
1.三步握手: 握手过程采用了 TCP 标志位 —— SYN(同步) 和ACK(确认)。
- 初次连接阶段:在建立连接过程中,在线客户端A向服务器B发送一个带有标记位的报文(标记位j)的同时切换至SYN_SEND状态以等待对方确认响应。
- 第二阶段:服务器B接收到该报文后需执行双重检查:一方面给予客户的同步确认(响应码j+1),另一方面立即发出另一方同步确认报文(标记位k),从而完成双方同步准备环节的状态切换至SYN_RECV状态。
- 最终一步:当在线客户端A接收到上述双重确认报文后立即返回自己的确认反馈(响应码k+1)。此反馈信息送入系统完成全部连接流程。

当握手过程中的某一阶段发生无意中中断时, TCP 协议将再次以相同的顺序传输数据包。
四次挥手:
- 客户端A向服务器B传输一个_FIN_报文用于关闭其与服务器B的数据传送。
- 服务器B接收到该_FIN_报文后会立即响应,并返回的数据包中包含当前序列号加一的信息。
- 服务器B断开与其建立的连接,并立即向客户端A发送一个_FIN_报文。
- 客户端A接收到 server_B 发送的 FIN 报文后会回复一个 Acknowledgement(ACK)报文并设定已接受数据的最大序列编号为接收到 ACK 报文中所包含的信息。

在TCP连接中,在客户端等待时**(即三次握手阶段),服务器端会单次发送SYN与ACK;而在断开连接的操作流程中(即四次挥手阶段),B段向A段先发一次ACK再发一次FIN。因为B段接收到A段发来的FIN指示后(即四次挥手的第一步),由于B段可能仍需传输其他数据包(即四次挥手中的第二次握手),所以它会立即发送ACK;待B段完成自身处理后再发出FIN(即四次挥手的最后一步)。
3.TCP连接的深入理解:由于TCP是全双工协议,在两端都需要单独实现连接关闭功能。当一方的数据发送完毕后应向另一方发送FIN信号以终止该方向的通信。接收方仅在无数据传输的情况下才会收到FIN信号,并且即使接收到FIN信号后仍可继续发送数据。主动关闭的一方会首先执行读取通道关闭的动作(随后才进行写入通道关闭),而被动一方则会依次处理相应的通道操作(总共需四个操作阶段)。具体而言,在客户机发起连接关闭时遵循以下步骤:1. 服务器首先执行读取通道关闭;2. 客户机随后完成写入通道关闭;3. 接着客户机再进行读取通道关断;4. 最后 server完成最后一步即写入通道关断动作。整个过程中双方都需要及时返回确认信息ACK(确认 acknowledged)才能标志着通信彻底结束
四、UDP协议
(1)UDP是一个无连接的协议,在传送数据前发送端与接收端均无需建立连接;当它需要传送数据时,则直接捕获应用程序传来的数据,并尽可能快速地将其发送到网络中。在发送端上,UDP的数据传输速度受限于应用程序生成数据的速度、计算机处理能力以及传输介质的带宽;在接收端上,则会将接收到的消息分段存入队列中,在应用程序调用时从队列中取出相应的消息分段处理。
(2)由于UDP在传送数据时不需维护收发两端的连接状态(包括工作状态等),因此一台服务机能够同时向多个客户机输送相同的消息。
(3)UDP信息包头部仅有8个字节长度,在相对较大的TCP信息包头部20个字节相比下其开销较小。
(4)UDP的数据传输吞吐量不受拥塞控制算法的影响限制;它仅受应用软件生成数据的速度、传输带宽以及源端和终端主机性能的影响。
(5)UDP采用尽力而为的交付机制(即不保证可靠交付),因此主机无需维护复杂的链接状态表(其中包含大量参数)。
(6)UDP是一种面向报文的数据传输协议;发送方在将应用程序提供的报文添加首部后立即向下传递给IP层;不会拆分也不会合并报文边界;因此应用程序必须选择合适大小的报文块进行处理。
我们通常使用"ping"命令来测试两台主机之间是否存在有效的TCP/IP通信路径;实际上"ping"命令的作用是向目标主机发送一个UDP数据包;目标主机若确认接收到该数据包则表示通信正常;如果能及时反馈到达确认信息,则表明网络是连通正常的。
TCP与UDP的区别:
1.基于连接机制与无连接机制;
2.主要依赖于TCP而非UDP,在资源利用方面表现更为高效;
3.其程序架构相对简洁明了;
4.流量传输模式与分组数据传输模式;
5.TCP确保了数据传输的完整性,并支持严格的顺序控制功能;而UDP虽然降低了对可靠性要求但无法保障传递过程中的顺序。
五、DNS协议
如果说ARP协议的作用是将机器识别的唯一标识符(MAC地址)与网络上的设备物理连接(IP地址)对应起来,则可以认为该协议的作用是将机器识别的唯一标识符与网络上的设备物理连接对应起来。而DNS协议则主要负责把人类易于理解的人工域名(如www.example.com)与计算机能够识别的机器标识码(如192.0.2.44)对应起来。其主要功能是把人类易于理解的人工域名与计算机能够识别的机器标识码对应起来。作为互联网基础设施的一部分,在此层级中负责对人工域名与机器标识码之间的映射关系进行管理。此外,在此过程中,默认情况下客户端会采用UDP协议来进行信息传递。然而,在广域网环境下由于不适合传输过大的UDP数据包,默认规定当报文长度超过512字节时应当切换至TCP协议来进行数据传输
IP地址专为主机设计 而域名则供用户访问
在hosts文件中 详细记录了域名与其对应的IP地址关系 最初 互联网信息中心负责维护这个名为hosts的列表 如果一个新加入计算机 需要向该机构提交配置请求 而现有设备也需定期同步信息以确保能够正常上网 然而 由于这种方法效率低下 于是出现了更高效的DNS系统。
DNS系统:
- 一个组织的管理系统负责维护系统内每个主机的IP地址与其主机名的对应关系。
- 当新计算机接入网络时,将其登记入数据库。
- 用户在输入域名时会通过DNS服务器查询,并由DNS服务器从数据库中检索相关信息以获取对应的IP地址。
DNS域名层级结构如下:

六、HTTP协议
HTTP是一种基于Hyper Text Transfer Protocol(超文本传输协议)的网络通信协议;主要负责从Web服务器传输超文本至本地浏览器。
HTTP遵循TCP/IP通信协议以传输HTML文件、图片文件以及查询结果等数据
HTTP作为一种应用层的对象协议,在网络通信领域具有重要地位。基于其简洁高效的方式特点,在构建分布式超媒体信息系统时表现出显著优势。该协议自1990年首次提出后,在实践中不断完善并加以扩展。目前在WWW浏览器中主要采用的是基于TCP/IP传输模型的标准版本(即HTTP/1.0),而针对后续版本(如HTTP/1.1)以及新的版本建议(如HTTP-NG)也在积极推进规范化工作
HTTP协议运行于基于客户端-服务器架构。Web浏览器通过URL接收所有网络请求向Web服务器发送至WWW浏览器的所有网络请求。Web服务器在接收到所有网络请求后返回相应的响应信息。
HTTP请求GET请求与POST请求的区别 :
1.url可见性:
get,参数url可见
post,url参数不可见
2.传输数据的大小:
通常情况下,在GET方法中传输的数据量一般在2KB至4KB之间。
与GET请求相比,在POST请求中传递的数据规模通常会更大。
3.数据传输上:
get通过拼接url进行传递参数
post通过body体传输参数
当一个get请求导致页面后退时,不会产生任何影响;而当一个post请求导致页面后退时,则会重新提交该请求
5.缓存性:
get请求是可以缓存的
post请求不可以缓存
6.安全性:都存在安全隐患(由于HTTP数据以明文形式传输),从 transmission parameters 的角度而言, post 的安全性确实优于 get, 因为 url 内容在传递过程中无法被直接获取
7.GET请求只能进行url编码,而POST支持多种编码方式
8.GET请求中的参数会被完整地保存在浏览器的历史记录中,在此期间其参数不会被保存。
HTTP状态码
状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态码包括:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
