与HTTP关系密切的协议:IP、TCP和DNS
IP
IP协议(网络层):用于把各种数据包传送给对方/负责传输
保证确实传送到对方那里的条件:
- IP地址(可变换):指明了节点要被分配到的地址,用于定位设备的位置和通信路径
- MAC地址(通常不变):网卡所属的固定地址,用于在局域网中唯一标识网络设备,由网络设备制造商分配
IP地址和MAC地址会进行配对
使用ARP协议凭借MAC地址进行通信
IP间的通信依赖MAC地址,因为当设备 A 需要和设备 B 进行通信时,它首先会发送一个 ARP请求来获取目标设备的 MAC 地址,在中转的时候,会利用下一站中转设备的MAC地址来搜索下一个中转目标。
ARP协议:用来解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。
为什么要中转?
- 在网络上,通信的双方在同一局域网(LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转才能连接到对方。
TCP
TCP(传输层):提供可靠的字节流服务
字节流服务:为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。
可靠的传输服务:能够把数据准确可靠地传给对方
总之:TCP协议为了更容易传输大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方
为了准确无误地将数据送达目标处,进行三次握手:
-
第一次握手:建立连接。 客户端发送连接请求报文段,将 SYN标志位 置为1,Sequence Number为x;然后客户端进入SYN_SENT状态,等待服务器确认。( SYN=1,seq=x )
-
第二次握手:服务器收到SYN报文段。 服务器收到客户端的SYN报文段,对这个报文段进行确认,设置Acknowledgement Number 为 x+1(Sequence Number + 1),ACK位置为1;同时,自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(SYN+ACK报文段),一并发送给客户端,服务器端进入SYN_RCVD状态。(SYN=1,ACK=1,seq=y,ACKnum=x+1 )
-
第三次握手:客户端收到服务器的SYN+ACK报文段。 然后将Acknowledgement Number设置为y+1(Sequence Number + 1),向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。( ACK=1,ACKnum=y+1 )
- 客户端向服务器端发送SYN + Seq 是连接请求
- 服务器返回新的 SYN + Seq 是服务器端向客户端发送连接请求,发送 ACK + Acknum 是响应客户端发来的连接请求
- 客户端向服务器再发送ACK + ACKnum 是客户端响应服务器端发来的连接请求
DNS
DNS服务(应用层):提供域名到IP地址间地解析服务
DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名地服务