一、OSI七层模型
全称:Open System Interconnection, 是国际标准化组织(ISO - International Organization for Standardization)制定的一个用于计算机或通信系统间互联的标准体系。
- 应用层 - application layer
- 表示层 - presentation layer
- 会话层 - session layer
- 传输层 - transport layer
- 网络层 - network layer
- 数据链路层 - data link layer
- 物理层 - physical layer
网络传输的例子:
二、TCP协议
传输层的一个协议,全称Transmission Control Protocal, 是为了在不可靠的互联网上提供可靠的端到端字节流专门设计的一个传输协议。
什么是不可靠的互联网:网上有两个电脑通信,但是因为连接环境的影响,可能导致带宽不够、延迟、丢包等情况
TCP协议的6种标志位:
SYN(synchronous):发起一个新连接
ACK(acknowledgement):响应、确认请求
PSH(push):催促对方尽量将信息传给应用层
FIN(finish):关闭一个连接
RST(reset):连接重置(断开)
URG(urgent pointer):出现紧急情况,要马上将信息交给应用层
TCP连接的过程:启动(建立连接)、数据传输、退出(关闭连接)
建立连接:
三次握手:
四次挥手:TCP协议是一个双向的协议,客户端和服务端都可以主动发起挥手请求。
三、wireshark工具的使用
是一个免费工具,官网:Wireshark · Go Deep
三次握手抓包:
四次挥手抓包:
浏览器F12抓到的请求并不是TCP请求,而是http请求,而wireshark抓到的是TCP请求,所以一个TCP请求上可以承载多个http请求。
四、UDP协议
TCP和UDP协议,都是传输层的协议。UDP(User Datagram Protocol)又叫做用户数据报协议,特点是发送数据前不需要建立连接,发送数据后也不用结束连接,因此容易丢失数据,但是速度块。所以一般应用于需要大量传输又不怕丢包的场景,比如发音频、视频、实时通话等场景。
五、HTTP协议
HTTP(Hyper Text Transformer Protocal,超文本传输协议),是一个应用层的协议,它允许将超文本标记语言(HTML)文档从服务器传送到客户端的浏览器中。
特点:(http1.0为例)
- 短连接:完成一次请求(请求+响应)就断开连接,节省服务器的资源。
- 无状态:数据传输过程中,不保存任何历史状态信息
- 传输可靠性高:使用TCP作为传输层的协议
- 可阐述任何内容对象
Get和post请求的区别?
- Get请求:参数是通过url地址传递,post请求放在request body中
- Get比post更不安全,因为参数暴露在url中,所以不能用于传输敏感信息
- Get请求在url中传数据是有长度限制的(1024字节),而post没限制
Session和Cookie:
举例:登录
客户端登录后,服务端会生成一个字符串叫做sessionId,会保存在服务端,同时将这个sessionId发送给客户端,客户端将sessionId的内容保存在本地的一个叫做xxx.cookie文件中,客户端后续做任何操作的时候,比如‘查看个人信息’时,就会在请求中包含这个sessionId,这时服务端就会检查这个sessionId是否和服务端保存的sessionId内容一致,如果一致则放行请求,返回个人信息页面,反之则拒绝请求。