① 应用层(数据包)
应用层位于 OSI 参考模型的第七层,其作用是通过应用程序间的交互来完成特定的网络应用
。该层协议定义了应用进程之间的交互规则,通过不同的应用层协议为不同的网络应用提供服务。例如域名系统 DNS,支持万维网应用的 HTTP 协议,电子邮件系统采用的 SMTP 协议等。在应用层交互的数据单元我们称之为报文。
② 表示层(数据包)
表示层的 作用是使通信的应用程序能够解释交换数据的含义
,其位于 OSI 参考模型的第六层,向上为应用层提供服务,向下接收来自会话层的服务。该层提供的服务主要包括数据压缩,数据加密以及数据描述。这使得应用程序不必担心在各台计算机中表示和存储的内部格式差异。
③ 会话层(数据包)
会话层就是 负责建立、管理和终止表示层实体之间的通信会话
。该层提供了数据交换的定界和同步功能,包括了建立检查点和恢复方案的方法。
④ 传输层(数据报文)
传输层的主要任务是 为两台主机进程之间的通信提供服务
。应用程序利用该服务传送应用层报文。该服务并不针对某一特定的应用,多种应用可以使用同一个传输层服务。由于一台主机可同时运行多个线程,因此传输层有复用和分用的功能。所谓复用就是指多个应用层进程可同时使用下面传输层的服务,分用和复用相反,是传输层把收到的信息分别交付上面应用层中的相应进程。
⑤ 网络层(数据分组)
两台计算机之间传送数据时其通信链路往往不止一条,所传输的信息甚至可能经过很多通信子网。网络层的 主要任务就是选择合适的网间路由和交换节点,确保数据按时成功传送
。在发送数据时,网络层把传输层产生的报文或用户数据报封装成分组和包向下传输到数据链路层。在网络层使用的协议是无连接的网际协议(Internet Protocol)和许多路由协议,因此我们通常把该层简单地称为 IP 层。
⑥ 数据链路层(帧)
数据链路层通常也叫做链路层,在物理层和网络层之间。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层协议。在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息。通过控制信息我们可以知道一个帧的起止比特位置,此外,也能使接收端检测出所收到的帧有无差错,如果发现差错,数据链路层能够简单的丢弃掉这个帧,以避免继续占用网络资源。
⑦ 物理层(比特流)
作为 OSI 参考模型中最低的一层,物理层的作用是 实现计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异
。使其上面的数据链路层不必考虑网络的具体传输介质是什么。该层的主要任务是确定与传输媒体的接口的一些特性(机械特性、电气特性、功能特性,过程特性)。
① 应用层
TCP/IP 模型将 OSI 参考模型中的会话层、表示层和应用层的功能合并到一个应用层实现,通过不同的应用层协议为不同的应用提供服务。例如:FTP、Telnet、DNS、SMTP、HTTP 等。
② 传输层(TCP/IP)
该层对应于 OSI 参考模型的传输层,为上层实体提供源端到对端主机的通信功能。传输层定义了两个主要协议:传输控制协议(TCP)和用户数据报协议(UDP)。其中面向连接的 TCP 协议保证了数据的传输可靠性,面向无连接的 UDP 协议能够实现数据包简单、快速地传输。
③ 网络层(ICMP/IGMP/ARP/RARP/IP 网络协议 IP)
网际互联层对应 OSI 参考模型的网络层,主要负责相同或不同网络中计算机之间的通信。在网际互联层, IP 协议提供的是一个不可靠、无连接的数据报传递服务。该协议实现两个基本功能:寻址和分段。根据数据报报头中的目的地址将数据传送到目的地址,在这个过程中 IP 负责选择传送路线。除了 IP 协议外,该层另外两个主要协议是互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。
④ 网络接入层
网络接入层的功能对应于 OSI 参考模型中的物理层和数据链路层,它负责监视数据在主机和网络之间的交换。事实上,TCP/IP 并未真正描述这一层的实现,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与 TCP/IP 的网络接入层进行连接,因此具体的实现方法将随着网络类型的不同而有所差异。
注:每层使用下层的服务来提供服务,对等层间的数据单位是协议数据单元 PDU,上下层间的数据单位是服务数据单元 SDU
OSI七层模型 | TCP/IP四层模型 | 对应的网络协议 |
---|---|---|
应用层(Application) | 应用层 | HTTP, TFTP, FTP, NFS, WAIS, SMTP, Telnet, DNS, SNMP |
表示层(Presentation) | TIFF, GIF, JPEG, PICT | |
会话层(Session) | RPC, SQL, NFS, NetBIOS, names, AppleTalk | |
传输层(Transport) | 传输层 | TCP, UDP |
网络层(Network) | 网络层 | IP, ICMP, ARP, RARP, RIP, IPX |
数据链路层(Data Link) | 数据链路层 | FDDI, Frame Relay, HDLC, SLIP, PPP |
物理层(Physical) | EIA/TIA-232, EIA/TIA-499, V.35, 802.3 |
数据分块
:数据会被分割成TCP认为最适合发送的数据块。序列号和确认应答机制
:TCP 给发送的每一个包进行编号,在传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。超时重传
:当TCP发送一个报文后,它会启动一个定时器,等待接收端确认收到这个报文段。若超时还没有收到确认,将重发这个报文段。流量控制
:TCP连接的双方都有一个固定大小的缓冲空间,发送方发送的数据量不能超过接收端缓冲区的大小。拥塞控制
:当网络某个节点发生拥塞时,减少数据的发送。总结:
白话解析三次握手过程:我要和你建立连接—>你真的要跟我建立连接吗?—>我真的要跟你建立连接----->成功
初始Client和Server均处于closed状态,Server会创建传输进程控制块TCB并进入listernd状态,监听端口是否收到连接请求
第一次握手
:Client向Server发送一个SYN标识,发送序号seq=J,发送后Client进入SYN_SENT同步已发送状态,等待Server确认。
第二次握手
:当Server收到SYN后,会发送一个SYN标识、ACK标识和确认序号(确认序号为收到序号+1)给Client表示确认连接请求。Server进入 SYN-RCVD 同步已接收状态
第三次握手
:当Client收到Server的确认后,检查ACK标识和确认序号数据是否正确,若正确就将ACK标识和确认序号发送给Server,当Server接收到数据后,也会检查ACK标识和确认序号数据是否正确,若正确则连接建立成功,Client和Server进入establish已建立状态,完成三次握手。
白话解析四次握手过程:我要和你断开连接—>好的,断吧—>我也要和你断开连接—>好的,断吧
第一次挥手
:Client发送一个FIN标识给Server,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态
第二次挥手
:Server接收到FIN标识后,会响应一个ACK标识、确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)给Client,,Server进入CLOSE_WAIT状态。此时TCP连接处于半关闭状态,即客户端已经没有要
发送的数据了,但服务端若发送数据,则客户端仍要接收。
第三次挥手
:Server发送一个FIN标识给Server,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手
:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号,Server进入CLOSED状态,完成四次挥手
CLOSE-WAIT状态是为了保证Server在关闭连接之前将待发送的数据发送完成。
TIME_WAIT状态发生在第四次挥手,当Client向Server发送ACK确认报文后进入该状态,若取消该状态,Client在收到Server的FIN标识后就会立即关闭连接,此时Server相应的端口并没有关闭,若Client在相同的端口立即建立新的连接,就有可能获取上一次连接吕残留的数据包,可能会导致不可预料的异常。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p7aXXqaZ-1617833696764)(C:\Users\10034\AppData\Roaming\Typora\typora-user-images\image-20210321170135295.png)]
对于非 Keep=Alive 来说,必须为每一个请求的对象建立和维护一个全新的连接。
在 Keep-Alive 方式下,服务器在响应后保持该 TCP 连接打开,在同一个客户机与服务器之间的后续请求和响应报文可通过相同的连接进行传送。
Keep-Alive模式的缺点:长时间的保持 TCP 连接时容易导致系统资源被无效占用,若对 Keep-Alive 模式配置不当,将有可能比非 Keep-Alive 模式带来的损失更大。因此,我们需要正确地设置 keep-alive timeout 参数,当 TCP 连接在传送完最后一个 HTTP 响应,该连接会保持 keepalive_timeout 秒,之后就开始关闭这个链接。
Http/1.0定义了三种请求方法:get,post,head
Http/1.1增加了六种请求方法:options,put,patch,delete,trace,connect
方法 | 描述 |
---|---|
get | 请求指定的页面信息,并返回具体内容。通常只用于读取数据 |
post | 向指定资源提交数据进行处理请求。数据被包含在请求体中。 |
delete | 请求服务器删除url标识的资源数据。 |
put | 替换指定的资源,没有的话就新增。 |
connect | 将服务器作为代理,让服务器代替。 |
options | 向服务器发送该方法,会返回对指定资源所支持的HTTP请求方法。 |
head | 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。 |
trace | 回显服务器收到的请求数据,即服务器返回自己收到的数据,主要用于测试和诊断。 |
patch | 是对put方法的补充,用来对已知资源进行局部更新。 |
对称加密是加密和解密都使用同一个密钥方式;
非对称加密是指使用公钥进行加密,使用私钥进行解密;