http历史版本 报文格式 网络分层

9601136-cbb31ca23cded724.png
http历史版本.png
9601136-b8476238adf4e9d6.png
HTTP报文格式.png
9601136-87152bb282f8cd1a.png
HTTP分块编码.png
9601136-ec037afc4fe85f18.png
网络分层模型.png

网络七层协议的通俗理解
Socket:这不是一个协议,而是一个通信模型。

  • A发包:发请求包给某个已经绑定的端口(所以我们经常会访问这样的地址182.13.15.16:1235,1235就是端口);收到B的允许;然后正式发送;发送完了,告诉B要断开链接;收到断开允许,马上断开,然后发送已经断开信息给B。
  • B收包:绑定端口和IP;然后在这个端口监听;接收到A的请求,发允许给A,并做好接收准备,主要就是清理缓存等待接收新数据;然后正式接收;接受到断开请求,允许断开;确认断开后,继续监听其它请求。

可见,Socket其实就是I/O操作。Socket并不仅限于网络通信。在网络通信中,它涵盖了网络层、传输层、会话层、表示层、应用层——其实这都不需要记,因为Socket通信时候用到了IP和端口,仅这两个就表明了它用到了网络层和传输层;而且它无视多台电脑通信的系统差别,所以它涉及了表示层;一般Socket都是基于一个应用程序的,所以会涉及到会话层和应用层。


socket通信流程
socket是"打开—读/写—关闭"模式的实现,以使用TCP协议通讯的socket为例,其交互流程大概是这样子的

  • 服务器根据地址类型(ipv4,ipv6)、socket类型、协议创建socket
  • 服务器为socket绑定ip地址和端口号
  • 服务器socket监听端口号请求,随时准备接收客户端发来的连接,这时候服务器的socket并没有被打开
  • 客户端创建socket
  • 客户端打开socket,根据服务器ip地址和端口号试图连接服务器socket
  • 服务器socket接收到客户端socket请求,被动打开,开始接收客户端请求,直到客户端返回连接信息。这时候socket进入阻塞状态,所谓阻塞即accept()方法一直到客户端返回连接信息后才返回,开始接收下一个客户端谅解请求
  • 客户端连接成功,向服务器发送连接状态信息
  • 服务器accept方法返回,连接成功
  • 客户端向socket写入信息
  • 服务器读取信息
  • 客户端关闭
  • 服务器端关闭
9601136-d65cfed813ab3636.png
socket通信流程

9601136-db069280366d1a8b.jpg
每层功能.jpg

OSI七层模型与TCP/IP五层模型

https://baike.so.com/doc/1404608-1484832.html

9601136-72e74924807e5de0.png
每一层都工作着不同的设备
9601136-daac843463533ec4.png
每一层实现的协议也各不同
9601136-47db0ecbf5e1d670.png
SSL握手.png

转载于:https://www.jianshu.com/p/67bd7e2ae2b4

猜你喜欢

转载自blog.csdn.net/weixin_34249678/article/details/91248220