OSI七层模型
TCP/IP四层模型
- 应用层
用来提供两个终端设备上的应用程序之间的信息交换,它定义了信息交换的格式,消息会交给下一层传输层来传输。
- 传输层
负责向两台终端设备进程之间的通信提供通用的数据传输服务。
- 网络层
为分组交换网上的不同主机提供通信服务并选择合适的路由,使运输层传下来的分组能够通过网络层中的路由器找到目的主机。
- 网络接口层
相当于数据链路层和物理层的结合。将IP数据报封装成帧并且实现相邻计算机节点之间比特流的透明传输。
HTTP Header中常见的字段有哪些?
请求头字段名 | 说明 | 实例 |
Accept | 能够接受的回应内容类型(Content-Types) | Accept:text/plain |
Accpet-Charset | 能够接受的字符集 | Accept-Charset:utf-8 |
Authorization | 用于超文本传输协议的认证的认证信息 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Connection | 该浏览器想要优先使用的连接类型 | Connection: keep-alive |
Content-Length | 请求头的长度 | content-length:348 |
Content-Type | 请求体的多媒体类型 | Content-Type: application/x-www-form-urlencoded |
Cookies | 超文本传输协议cookies | Cookie: $Version=1; Skin=new; |
Host | 服务器的域名和端口号 |
从输入URL到页面展示到底发生了什么?
- 在浏览器中输入了指定网页的URL
- 浏览器通过DNS协议获取域名对应IP地址
- 浏览器根据IP地址和端口号,向目标浏览器发起一个TCP连接请求
- 浏览器在TCP连接上,向服务器发送一个HTTP请求报文,请求获取网页的内容
- 服务器收到HTTP请求报文后,处理请求,并返回HTTP响应报文给浏览器
- 浏览器接收到HTTP响应报文后,解析响应体中的HTML代码渲染网页
- 浏览器在不需要和服务器通信时,可以主动关闭TCP连接
HTTP状态码
HTTP和HTTPS区别
HTTP协议运行在TCP之上,传输的内容是明文传输的,客户端和服务端都无法验证对方身份。HTTPS是运行在SSL/TLS之上的HTTP协议,所有内容都是经过加密进行传输的。并且HTTP默认端口是80,HTTPS是443。HTTP安全性没有HTTPS安全性高,但是HTTPS比HTTP耗费更多服务器资源。
TCP三次握手和四次握手
建立连接-TCP三次握手
- 三次握手:为了准确无误地把数据传达到目标处,TCP采用了三次握手策略
三次握手的目的是为了建立可靠的通信信道,也就是确定了对方与自己的收发都是正常的
- 第一次握手:Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常
- 第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:对方发送正常,自己接收正常
- 第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送、接收正常
断开连接-TCP四次握手
- 四次握手:
TCP是全双工通信,可以双向传输数据。任何一方都可以在数据传输结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另外一方也没有数据发送的时候发出连接释放通知,对方确认后就完全关闭TCP连接。
TCP如何保证传输的可靠性
- 基于数据块传输
- 对失序数据包重新排序和去重:TCP为了保证不丢包,给每个包一个序列号,根据序列号将收到的数据排序并去重。
- 校验和:TCP将保持它首部和数据的校验和,用来检验数据在传输过程中是否存在差错,如果存在差错则将这个报文段进行丢弃
- 重传机制:在数据包丢失或延迟情况下,重新发送数据包,直到收到对方的应答。
- 流量控制: 通过滑动窗口实现流量控制,控制发送方发送速率保证接收方来得及接受
- 拥塞控制:当网络发送拥塞时,减少数据的发送