目录
网络分层
TCP的三次握手与四次挥手
三次握手
第一次握手 建立连接。客户端发送连接请求报文段,将 SYN 设置为 1、Sequence Number(seq)为x;接下来客户端进入SYN_SENT状态,等待服务端的确认。
第二次握手 服务器收到客户端的 SYN 报文段,对 SYN 报文段进行确认,设置Acknowledgment Number(ACK)为 x+1(seq+1);同时自己还要发送 SYN 请求信息,将SYN设置为1、seq为y。服务端将上述所有信息放到SYN+ACK报文段中,一并发送给客户端,此时服务端进入SYN_RCVD状态。
第三次握手 客户端收到服务端的SYN+ACK报文段;然后将ACK设置为y+1,向服务端发送ACK报文段,这个报文段发送完毕后,客户端和服务端都进入ESTABLISHED (TCP连接成功)状态,完成TCP的三次握手。
四次挥手
第一次挥手 客户端设置 seq 和 ACK ,向服务端发送一个 FIN 报文段。此时,客户端进入 FIN_WAIT_1 状态,表示客户端没有数据要发送给服务端了。
第二次挥手 服务端收到了客户端发送的 FIN 报文段,向客户端回了一个 ACK 报文段。
第三次挥手 服务端向客户端发送 FIN 报文段,请求关闭连接,同时服务端进入 LAST_ACK 状态。
第四次挥手 客户端收到服务端发送的FIN报文段,向服务端发送ACK报文段,然后客户端进入 TIME_WAIT状态。服务端收到客户端的ACK报文段以后,就关闭连接。此时,客户端等待2MSL(最大报文段生存时间)后依然没有收到回复,则说明服务端已正常关闭,这样客户端也可以关闭连接了。
HTTP协议原理
http://host[":"port][abs_path]
http 表示要通过HTTP协议来定位网络资源;
host 表示合法的Internet主机域名或者IP地址;
port 指定一个端口号,为空则使用默认端口80;
abs_path 指定请求资源的URI(Web上任意的可用资源)。
HTTP有两种报文,分别是请求报文和响应报文,下面先来查看请求报文。