OSI七层网络模型
应用层:Http协议、文件服务器等
表示层:数据转换解决不同系统通信兼容问题
会话层:建立和应用程序的会话连接
传输层:提供端口号和传输协议(tcp、udp)
网络层:为数据实现路由(交换机、路由器)
数据链路层:传输地址帧和错误检测
物理层:以二进制形式,在物理机上实现传输(光纤、专线、其他物理介质)
Socket:任何编程语言都支持Socket(网络编程)技术开发,主要用途是解决两个应用程序通讯的问题。Socket技术支持(TCP、UDP)
TCP和UDP的区别:
TCP协议是一个可靠的协议,因为建立连接的时候必须通过三次握手才可以实现数据传输,所以数据不会丢失。
应用场景:http协议、rpc框架。
UDP协议是面向无连接协议,udp通讯的时候不需要接受对方是否存在,使用不可靠传输,可能存在丢包。
TCP三次握手:
第一次握手:客户端向服务端发送消息,确认服务端是否存在。
第二次握手:服务端收到客户端询问,服务端回复客户端确认收到。
第三次握手:客户端收到响应,客户端会正式给服务端传输数据。
三次握手全部成功开始建立传输。
syn(建立连接)、ack(确认标记)、fin(终止标记)
①第一次握手:客户端向服务端发送代码 syn=1,随机产生一个数seq=x(随机数)发送到服务端。
②第二次握手:服务器端确认收到syn和x,回复客户端ack=x+1和seq=y(随机数)
③第三次握手:客户端接收syn、ack、y之后向服务器发送ack=y+1,发送完毕后立刻创建连接。
四次挥手
第一次挥手:客户端向服务端发送一个释放连接通知
第二次挥手:服务端接到后告诉客户端等待一下,因为可能有数据没有发送完毕,等待数据全部传输完毕后关闭连接
第三次挥手:服务端所有数据传输完毕后,告诉客户端可以释放连接
第四次挥手:客户端确认后释放连接通知,并向服务端发送可以关闭连接指令
Http协议是一种超文本的传输协议,基于Tcp/ip协议实现的包装,img,css,html
Http协议默认端口号80 铭文传输
Https协议默认端口443 加密传输
Https比http协议要安全,ssl+证书实现传输
Http特征:
①无状态:没有记忆会话,token、jwt
②请求(req)与相应模型(resp)
③简单快捷
④灵活可以传输任何类型
请求:
- 请求头
- 请求类型
- 请求方法
响应: - 响应头
- 响应体
Http协议1.0
规定客户端与服务器传输完成后,马上关闭连接。
Http协议1.1
规定客户端与服务端传输支持长连接。
长连接:服务端与客户端连接后不会马上关闭,会保持一定复用机制,默认情况在300s空闲时会自动断开连接。
短连接:客户端与服务器端发送消息后会马上关闭连接,如果频繁发送http请求,可能会消耗服务器资源。