【转】计算机网络五层(七层)协议 | 臭大佬

臭大佬 2020-09-07 10:09:27 234
简介 计算机网络五层(七层)协议

概论

OSI模型有7层结构,每层都可以有几个子层。 OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 ;其中高层(即7、6、5、4层)定义了应用程序的功能,下面3层(即3、2、1层)主要面向通过网络的端到端的数据流。

应用层

应用层是网络应用程序及其应用层协议存留的地方。因特网的应用层协议包括许多层,如

HTTP(为WEB文档提供请求和传送),

SMTP(提供电子邮件报文的传输),

FTP(提供2个端系统之间的文件传送),

DNS-域名系统(将域名转换为32比特网络地址)

应用层协议分布在多个端系统,一个端系统的应用程序使用协议与你另外一个端系统中的应用程序交换信息分组。这种位于应用层的 信息分组成为 报文(message)

http一次请求的过程

  • 用户在浏览器输入www.choudalao.com

  • dns服务器解析/或者本机hosts,路由器hosts对比 获得ip

  • 浏览器访问默认端口80,则访问的tcp地址为 ip:80

  • tcp协议3次握手,建立连接

  • 发送一个http request请求头

  • 服务器获得http request请求头,表明该次访问为http访问,解析http请求头,获得请求类型,请求格式,以及请求数据(cookie,get,post数据)

  • 服务器发送response响应数据,主动断开

  • 浏览器接收response响应数据,解析响应文本类型,解析数据,断开连接

表示层

会话层

传输层

传输层提供了在应用程序端点之间传输应用层报文的服务。在英特网中,有两个传输层协议,–TCP,UDP。利用其中任何一个都能传输应用层报文。
TCP向他的应用程序提供了 面向连接 的服务。这种服务包括了应用层报文向目的地的 确保传递和流量控制(即发送方接收方速率匹配)。
TCP也将长报文划分为短报文,并提供阻塞控制机制,因此网络拥塞时,抑制其传输速率。

三次握手:

3次握手”的作用就是双方都能明确自己和对方的收、发能力是正常的。
第一次握手:客户端发送网络包,服务端收到了。这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
第二次握手:服务端发包,客户端收到了。这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。 从客户端的视角来看,我接到了服务端发送过来的响应数据包,说明服务端接收到了我在第一次握手时发送的网络包,并且成功发送了响应数据包,这就说明,服务端的接收、发送能力正常。而另一方面,我收到了服务端的响应数据包,说明我第一次发送的网络包成功到达服务端,这样,我自己的发送和接收能力也是正常的。

第三次握手:

客户端发包,服务端收到了。这样服务端就能得出结论:客户端的接收、发送能力,服务端的发送、接收能力是正常的。 第一、二次握手后,服务端并不知道客户端的接收能力以及自己的发送能力是否正常。而在第三次握手时,服务端收到了客户端对第二次握手作的回应。从服务端的角度,我在第二次握手时的响应数据发送出去了,客户端接收到了。所以,我的发送能力是正常的。而客户端的接收能力也是正常的。
经历了上面的三次握手过程,客户端和服务端都确认了自己的接收、发送能力是正常的。之后就可以正常通信了。

看图前,先解释一下图里面的各个参数含义:

Seq:序号
Ack:确认方Ack=发起方Seq+1,两端配对。
URG:紧急指针(urgent pointer)有效。
ACK:确认序号有效。
PSH:接收方应该尽快将这个报文交给应用层。
RST:重置连接。
SYN:发起一个新连接。
FIN:释放一个连接。

三次握手图解

三次握手动图
三次握手动图

四次挥手:

TCP连接是双向传输的对等的模式,就是说双方都可以同时向对方发送或接收数据。当有一方要关闭连接时,会发送指令告知对方,我要关闭连接了。这时对方会回一个ACK,此时一个方向的连接关闭。但是另一个方向仍然可以继续传输数据,等到发送完了所有的数据后,会发送一个FIN段来关闭此方向上的连接。接收方发送ACK确认关闭连接。注意,接收到FIN报文的一方只能回复一个ACK, 它是无法马上返回对方一个FIN报文段的,因为结束数据传输的“指令”是上层应用层给出的,我只是一个“搬运工”,我无法了解“上层的意志”。

通俗易懂版图

UDP协议向他的应用程序提供 无连接 服务。这是一种不提供不必要的服务,不提供可靠性,没有流量控制,没有阻塞控制。 传输层分组称为 报文段(segment)

tcp协议和udp协议的差别

TCP UDP
是否连接 面向连接 面向非连接
传输可靠性 可靠 不可靠
应用场合 少量数据 传输大量数据
速度

网络层

因特网的网络层负责将 网络层分组–数据报(datagram) 从一台主机移动到宁外一台主机。源主机中的因特网 传输层协议(TCP/UDP)向网络层递交传输层报文段和目的地址,就像 我们向邮政提供目的地址一样。
网络层协议包括
IP协议,该协议定义了数据报中的各个字段以及端系统和路由器符合作用于这些字段。仅有一个IP协议,所有基友网络层的因特网组件都必须运行IP协议。因此网络层也包括
决定路由的 选路协议,数据报根据路由从源传输目的地。因此因特网具有许多选路协议。
数据链路层
因特网的网络层通过一系列路由器在源和目的自之间发送分组。为了将分组从一个节点(主机或路由器)移动到路径上的下一个节点,网络层必须依靠链路层的服务。特别实在每个节点,网络层将数据报下传给链路层,链路层沿着路径将数据报传递给下一个节点,在该个节点,链路层将数据报上传给网络层。
网络层提供的服务取决于应用于该链路的特定链路协议。链路层的例子包括 以太网,wifi,点对点协议(PPP)。因为数据报从源到目的地传送通常需要经过几条链路,所以他可能被沿途的不同链路上的不同链路层协议处理。例如:某个数据报可能被一条链路上的以太网和下一条链路上的PPP处理。网络层接收来自每个不同的链路层的不同服务, 链路层分组成为 帧(frame)

物理层

链路层的任务是将整个帧从网络元素移动到邻近的网络元素,二服务里的任务是将该帧中一个一个比特从一个节点移动到下一个节点。该层中的协议仍然与链路相关,并且进一步与链路(双绞铜线,单模光纤)的书籍传输媒体相关。例如,以太网具有多个物理层协议:关于双绞铜线的,关于同轴电缆的,关于光纤的…..在每种情况下,跨越这些链路移动一个比特的方式不同。