第一部分 WEB基础.png
1. 网络模型
网络模型.png
2. TCP三次握手
- 三次握手是指TCP建立连接需要客户端和服务器一共发三个包。
- 三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换窗口大小信息。在socket编程中,客户端执行connect()时,将触发三次握手。
- 位码即TCP标志位,有6种标示:
SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)
- 第一次握手(SYN=1, seq=x):
客户端发送一个 标志位 SYN =1,随机生成seq number=123456的tcp数据包,服务器解析到SYN=1就知道客户端要求建立连接。
发送完毕后,客户端进入 SYN_SEND 状态。- 第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1):
主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包。
发送完毕后,服务器端进入 SYN_RCVD 状态。第三次握手(ACK=1,ACKnum=y+1)
主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。
发送完毕后,客户端进入 ESTABLISHED 状态,当服务器端接收到这个包时,也进入 ESTABLISHED 状态,TCP 握手结束。
tcp-connection-made-three-way-handshake.png
3. HTTP连接处理过程
- 客户端发起请求,访问url
- DNS解析url,转换成对应的IP地址
- 客户端访问到对应的IP和端口号,建立一条与服务器的TCP连接
- 客户端向服务器发送HTTP请求报文
- 服务器返回HTTP响应报文
- 关闭连接
4. 提高HTTP连接性能
- 并行连接
通过建立多条tcp连接并发进行http请求。并行连接不一定更快。- 持久连接
HTTP/1.1(以及HTTP/1.0的各种增强版本)允许HTTP设备在事务处理结束之后将TCP连接保持在打开状态,以便为未来的HTTP请求重用现存的连接。- 管道化连接
在响应到达之前,可以将多条请求放入队列。