TCP/IP 五层模型
应用层:如http,telnet,ftp,dns,smtp
传输层:tcp,udp
网络层:ip,icmp,rip,igmp
TCP 三次握手
参考:https://baijiahao.baidu.com/s?id=1654225744653405133&wfr=spider&for=pc
为什么要三次:
为了防止服务器端开启一些无用的连接增加;第三次握手的作用:服务器端能够及时地察觉到因为网络等一些问题导致的连接创建失败,这样服务器端的端口就可以关闭了不用一直等待。
TCP四次挥手
为什么要第四次
服务端接到关闭请求后,需要处理已连接请求,请求处理完后,
才可以关闭请求。
为什么客户端在TIME-WAIT阶段要等2MSL?
当客户端发出最后的ACK确认报文时,并不能确定服务器端能够收到该段报文。所以客户端在发送完ACK确认报文之后,会设置一个时长为2MSL的计时器。MSL指的是Maximum Segment Lifetime:一段TCP报文在传输过程中的最大生命周期。2MSL即是服务器端发出为FIN报文和客户端发出的ACK确认报文所能保持有效的最大时长。
服务器端在1MSL内没有收到客户端发出的ACK确认报文,就会再次向客户端发出FIN报文;
如果客户端在2MSL内,再次收到了来自服务器端的FIN报文,说明服务器端由于各种原因没有接收到客户端发出的ACK确认报文。客户端再次向服务器端发出ACK确认报文,计时器重置,重新开始2MSL的计时;
否则客户端在2MSL内没有再次收到来自服务器端的FIN报文,说明服务器端正常接收了ACK确认报文,客户端可以进入CLOSED阶段,完成“四次挥手”。
前"两次挥手"既让服务器端知道了客户端想要释放连接,也让客户端知道了服务器端了解了自己想要释放连接的请求。于是,可以确认关闭客户端到服务器端方向上的连接了;
http协议
1、无状态:即协议本身对发送过的请求和响应不做存储
2、浏览器键入URL:
1、基于域名查找IP,先从本地hosts找,找不到再从域服务器查找,一直找到该域名对应的IP
2、基于IP地址和端口(默认80),建立TCP连接(三次握手,在第三次的握手时,发送请求报文到服务器)
3、服务器对请求作出响应
4、释放TCP连接
5、浏览器处理
3、无连接
每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。
版本 | 产生时间 | 内容 | 发展现状 |
---|---|---|---|
HTTP/1.0 | 1996年 | 传输内容格式不限制,增加PUT、PATCH、HEAD、 OPTIONS、DELETE命令 | 正式作为标准 |
HTTP/1.1 | 1997年 | 持久连接(长连接)(Connection:keep-alive)、节约带宽(range头域,支持只请求资源的一部分,而不是全部)、HOST域(即支持一个服务器可以有多个IP | |
)、管道机制、分块传输编码 | 2015年前使用最广泛 | ||
HTTP/2 | 2015年 | 多路复用(HTTP/2多个请求可同时在一个连接上并行执行)、服务器推送、头信息压缩、二进制协议等 | 逐渐覆盖市场 |
HTTP交互过程
HTTP和HTTPS的比较
1、HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的;HTTPS可以有效的防止运营商劫持
HTTPS的实现原理:参考https://blog.csdn.net/xiaoming100001/article/details/81109617
HTTP详解
https://blog.csdn.net/liqihang_dev/article/details/82838205