计算机网络 | 青训营笔记

130 阅读5分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记。主要记录计算机网络课程上的一些重点内容及理解。

一.ARP协议

ARP协议即地址解析协议,用于在局域网内解析IP地址对应的物理地址。其处于数据链路层和网络层之间,下层数据链路层需要MAC地址进行转发,这时就需要通过ARP协议来获取解析。

首先路由器发送一个ARP广播请求到所有局域网内的主机,网内其他主机收到这个ARP请求后,检查发送ARP请求的主机的IP地址,将该IP地址和其对应的MAC地址存放在ARP缓存中,检查这个ARP请求中请求的IP地址是否为自己的IP地址,是则发送一个ARP应答,应答包含自己的IP地址和对应的MAC地址。当网络内的路由器得到了MAC地址后,便可以通过数据链路层将数据包正确传输到目的主机上了。

需注意ARP本质是查找下一跳的MAC地址而不是请求目标地址!需要在同网段内才能发送ARP。

二.MAC地址不能代替IP地址原因

1.信息传递时涉及跨网传输,需要知道的其实是两个地址:终点地址、下一跳地址。IP地址本质上是终点地址,不会因经过路由器而发生改变。而MAC地址则是下一跳的地址,每跳过一次路由都会改变。

2.MAC地址和IP地址分别表示物理地址和逻辑地址,这样分层可以使网络层与数据链路层的协议更灵活地替换。

3.MAC地址可以唯一标识主机,但不能标识处于哪个网络。类比身份证记录了个人信息但不能标识人当前所在的位置。知道一个设备的MAC地址,要发送数据给它,需要它和发送方处于同一个网络内。而统一的IP地址可以标识所在网络,使连接到因特网的主机之间的通信就像连接在同一个网络上。

三.HTTP协议内容

HTTP协议即超文本传输协议,它指定了客户端可以发送给服务器什么样的信息以及得到什么样的响应。

1.请求报文格式:请求行(方法字段、URL字段、HTTP协议版本字段)- 通用信息头 - 请求头 - 请求体

2.应答报文格式:状态行(协议版本、状态码、状态码描述) - 通用信息头 - 响应头 - 响应体

常见HTTP状态码: 1xx:信息类;2xx:成功; 3xx:重定向; 4xx:客户端错误; 5xx:服务端错误。

四.HTTP不同版本

  1. HTTP1.0: 浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)。
  1. HTTP1.1: 默认使用Connection: keep-alive,避免了连接建立和释放的开销,但服务器必须按照客户端请求的先后顺序依次返回相应的结构以保证客户端能够区分出每次请求的响应内容。通过Content'-Length字段来判断当前请求的数据是否已经全部接收。不允许同时存在两个并行的响应。存在队头阻塞、传输慢的问题。
  1. HTTP2: 使用enconder对传输的header进行压缩,减少了需要传输大小。引入二进制数据帧和流的概念。每个请求是一个数据流,数据流以消息的形式发送,而消息由一个或多个帧组成。其中帧对数据进行顺序标识,接收时根据帧头部流标识符重新组装避免了合并数据混乱。 实现多路复用(连接共享), 所有HTTP2.0通信都在一个TCP连接上完成并可承载双向数据流。同时每个数据流都可以设置优先级和依赖,优先级高的数据流优先被服务器处理和返回。 服务器除了对最初请求响应外,服务器还可以额外得向客户端推送资源,而无需客户端明确的请求。
  1. HTTP3: HTTP2多个请求复用一个TCP连接,一旦发生丢包就会触发TCP的重传机制阻塞住所有的HTTP请求。HTTP3把HTTP下层的TCP协议换成UDP避免了整体堵塞。并通过QUIC协议保证了UDP传输的可靠性,当某个流丢包时,只会阻塞这个流,其他流不会收到影响。

五.HTTPS

HTTPS着重解决了HTTP传输不安全的缺陷,在TCP和HTTP网络层之间加了SSL/TLS安全协议。在TCP三次握手后,还需要SSL/TLS的握手过程,才可以进行报文加密传输。

HTTPS协议需要向CA(证书权威机构) 申请数字证书以保证服务器的身份是可信的,避免网站冒充风险。

在端口号上,HTTP的端口号为80,HTTPS的端口号为443。

六.输入网络域名到网页加载出来的过程

1.通过DNS解析查询服务器域名对应的真实IP地址。

2.解析URL并生成要发送的HTTP请求信息。

3.得到IP地址后,经过TCP三次握手建立连接以进行数据的传输。

4.服务器响应http请求,处理之后返回给浏览器页面文件等。

5.浏览器解析html、css、js等代码,并请求html中的资源,完成页面的渲染。