http网络分层图

http协议与udp协议_客户端

应用层

网络服务与最终用户的一个接口。协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP

表示层

数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
格式有,JPEG、ASCll、EBCDIC、加密格式等

会话层

建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
对应主机进程,指本地主机与远程主机正在进行的会话

传输层

定义传输数据的协议端口号,以及流控和差错校验。
协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层

网络层

进行逻辑地址寻址,实现不同网络之间的路径选择。
协议有:ICMP IGMP IP(IPV4 IPV6)

数据链路层

建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。

物理层

建立、维护、断开物理连接。(由底层网络定义协议)
TCP/IP 层级模型结构,应用层之间的协议通过逐级调用传输层(Transport layer)、网络层(Network Layer)和物理数据链路层(Physical Data Link)而可以实现应用层的应用程序通信互联。

参考文档

七层模型:https://baike.baidu.com/item/...

http三次握手

在客户端和服务器之间进行HTTP的发送和请求的过程中,需要创建一个TCP connection(TCP链接)的东西。

因为HTTP不存在连接这个概念的,只有请求和响应这个概念,请求和响应都是数据包,需要经过一个传输的通道的,这个传输的通道就在TCP里面创建了一个从客户端发起和服务端接收的这样一个连接,这个连接可以一直保持在这里,http请求就是在这个连接的基础上来发送的。因此在一个TCP连接上就可以发送多个HTTP请求。

在HTTP1.0中,是在创建http请求的时候就创建TCP连接,请求发送过去服务器响应以后TCP连接就关闭了。

在HTTP1.1中,可以声明这个连接可以一直保持在那里,就是第一个请求发送以后这个连接不关闭,后续HTTP请求可以继续使用这个连接。

因为TCP连接在创建的过程中是有三次握手这么一个消耗的。

在HTTP2.0里面,TCP连接中的HTTP请求是可以并发的,即一个用户向一个服务器发起一个网络请求的时候,只需要一个TCP连接。

http协议与udp协议_客户端_02

客户端发起一个创建连接的数据包的请求。


SYN:标志位。表示这是一个创建请求的数据包
Seq:数字,一般为1

服务端接收到这个数据包。就会开启一个TCP socket的端口,端口开启以后返回给客户端

SYN:标志位。
ACK:客户端的SYN+1。
Seq:服务端的Seq

客户端拿到了。继续返回


ACK
Seq

为什么要有三次握手:

防止服务端开启无用的连接。因为网络传输是有延时的,可以规避网络延时导致服务器额外的开销