http协议
是应用层协议,是基于tcp/ip通信协议来传输数据
http协议是无连接的:意味着每次连接只处理一个请求。服务器接收到处理完客户的请求,并收到客户的应答之后就会断开连接。节约了传输时间
http协议是无状态的:意味着对事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,必须要重传,这样可能导致每次传输的数据量大,但是如果服务器后续处理不需要前面的信息就会应答的比较快
http协议是媒体独立的:意味着只要客户端和服务端知道如何处理数据的内容,那么任何数据都可以通过http来进行传输
http请求消息
一个http请求代表客户端向服务端发送的数据。
一个完整的http协议请求包括一个请求行,若干个请求头,换行,实体内容
(get请求,内容通过url传输,post请求,内容通过表单传输)
http响应消息
一个http响应代表服务端向客户端响应的数据
一个完整的http协议响应包括一个响应行,若干个请求头,实体内容
一个完整的http协议请求的过程:
对网址进行域名解析,得到相应的ip地址
根据ip地址找到对应的服务器,发起三次握手
建立tcp连接,发起http请求
服务器响应http请求,浏览器得到html代码,解析代码,请求资源,对页面进行渲染
服务器关闭tcp连接
tcp:
位于传输层,是一个面向连接,可靠的传输协议,提供可靠的字节流服务
tcp协议是全双工的,因此每个方向都必须单独关闭
三次握手:
第一次握手:建立连接时,客户端向服务端发送一个SYN请求,此时客户端进入等待状态,等待服务端确认
第二次握手:服务端确认连接,确认是客户端发送的SYN包,自己也发送一个SYN包,即SYN+ACK包,此时服务端进入发送状态
第三次握手:客户端收到服务端的SYN+ACK包,向服务端发送确认包ACK,此包发送完毕,就完成了三次握手
如果握手过程中断了,则tcp会再次以相同的顺序发送相同的数据包
四次挥手:
客户端向服务端发送一个FIN,表示客户端关闭与服务端的连接
服务端收到客户端的FIN,发回确认包ACK
服务端向客户端发送一个FIN,表示服务端关闭与客户端的连接
客户端收到服务端的FIN,发回确认包ACK
tcp协议用滑动窗口机制来进行流量传输
在建立连接时,各端会分配一个缓冲区来存储数据,并将缓冲区的尺寸发送给另一端,接收方发送的消息中包含了自己的剩余缓冲区的尺寸,剩余缓冲区的空间的数量叫做窗口
tcp协议的拥塞控制
防止过多的数据注入到网路中,这样可以使网络中的路由器或链路不至于阻塞。拥塞控制是一个全局性的过程,和流量控制不同,流量控制是点对点的控制。
udp协议
位于传输层,是一种无连接的,不可靠的传输协议,也称透明协议
tcp与udp的区别:
tcp面向连接的传输,通信前要建立连接(三次握手机制)、udp无连接的不传输,通信前不需要建立连接
tcp可靠的传输协议(有序,无差错,不丢失,不重复),udp不可靠的传输协议
tcp面向字节流的传输,能将信息分割成组,并在接收端将其重组,udp面向数据报的传输,没有分组开销
tcp提供拥塞机制和流量控制机制,udp不提供
udp较好的实时性,工作效率比tcp高
udp的段结构比tcp简单,所以网络开销小
参考:https://blog.csdn.net/striveb/article/details/84063712