TCP/IP模型与OSI模型
在网上盗来的一张图片
IP协议(网络层)
ip协议是互联网的基础协议,它是目前最流行的一种网络协议
IP的责任就是把数据从源传送到目的地。它不负责保证传送可靠性,流控制,包顺序和其它对于主机到主机协议来说很普通的服务。
TCP协议(传输层)
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,建立一个连接需要三次握手,而终止一个连接要经过四次挥手。
HTTP协议(应用层)
HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),HTTP协议是建立在TCP协议之上的一种应用。
http一次请求的过程大概如下:
- 用户在浏览器输入 www.baidu.com
- dns服务器解析/或者本机hosts,路由器hosts对比 获得ip
- 浏览器访问默认端口80,则访问的tcp地址为 ip:80
- tcp协议3次握手,建立连接
- 发送一个http request请求头
- 服务器获得http request请求头,表明该次访问为http访问,解析http请求头,获得请求类型,请求格式,以及请求数据(cookie,get,post数据)
- 服务器发送response响应数据,主动断开
- 浏览器接收response响应数据,解析响应文本类型,解析数据,断开连接
https协议中,在请求以及响应时多了一层tls,ssl加密解密协议,默认端口从80变为了443
UDP协议
UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议
广播式数据传输,UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
WebSocket
WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
实现原理
在实现websocket连线过程中,需要通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程通常称为“握手” 。在 WebSocket API,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。在此WebSocket 协议中,为我们实现即时服务带来了两大好处:
- Header: 互相沟通的Header是很小的-大概只有 2 Bytes
- Server Push: 服务器的推送,服务器不再被动的接收到浏览器的请求之后才返回数据,而是在有新数据时就主动推送给浏览器
socket
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议
socket与TCP/IP的对应关系
Http 与 Socket 的主要区别
Socket 实现服务器与客户端之间的物理连接,并进行数据传输。主要有TCP/UDP两个协议。Socket处于网络协议的传输层。
参考
https://www.php.cn/php-weizijiaocheng-363000.html
https://www.cnblogs.com/baizhanshi/p/8482612.html