计算机网络中的五层协议结构


计算机网络中的五层协议结构


应用层

任务:为操作系统或网络应用程序提供访问网络服务的接口 ,通过应用进程间的交互完成特定网络应用。应用层定义的是应用进程间通信和交互的规则
常用协议:HTTP、SMTP、FTP、ping、telnet、DNS、DHCP等

http协议(超文本传输协议)

主要特点:

  • 支持客户/服务器模式
  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径;请求方法常用GET、HEAD、POST等,每种方法规定了客户与服务器联系的不同类型;HTTP协议简单,服务器程序规模小,通信速度较快
  • 灵活:HTTP允许传输任意类型的数据对象;正在传输的数据类型由Content-Type加以标记
  • 无连接:无连接是指每次连接只处理一个请求;服务器处理完客户请求,并收到客户应答后,即断开连接,节省传输时间
  • 无状态:无状态是指协议对于事务处理没有记忆能力;应答较快,但传输数据量较大

HTTP请求

  • 三部分组成:请求行、消息报头、请求正文
  • 格式:Method Request-URI HTTP-Version CRLF
  • Method:请求方法,GET、POST等
  • Request-URI:请求的HTTP协议版本

HTTP状态码

  • 由三位数字组成,首数字定义响应类别
  • 1xx:指示信息,表示请求已接收,继续处理;
  • 2xx:成功
  • 3xx:重定向,要完成请求必须进行更进一步的操作;
  • 4xx:客户端错误,请求有语法错误或请求无法实现
  • 5xx:服务器端错误:服务器未能实现合法的请求

常见状态代码

  • 200:OK,请求成功;
  • 400:Bad Request,请求有语法错误,不能被服务器所理解;
  • 401:Unauthorized,请求未经授权;
  • 403:Forbidden,服务器收到请求,但是拒绝提供服务;
  • 404:Not Found,请求资源不存在;
  • 500:Internet Server Error,服务器发生不可预期的错误;503:Server Unavailable,服务器不能处理客户请求

运输层

运输层是在进程间传输报文,同时TCP协议、UDP协议是TCP/IP中最具有代表性的传输层协议

TCP协议:面向连接、可靠的流协议。

连接是指两个应用程序为了相互传递信息而专有的、虚拟的通信线路,也叫做虚拟电路。流是指不间断的数据结构,类似于管道中的水流。可靠性指TCP协议提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具有“流量控制”、“拥塞控制”提供网络利用率等众多功能。

TCP协议应用场景

效率要求相对低,但对准确性要求相对高的场景。因为传输中需要对数据确认、重发、排序等操作,相比之下效率没有UDP高。例如(文件传输(准确高要求高、但是速度可以相对慢)、接受邮件、远程登录)

TCP详解

TCP通过校验和、***、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。

连接管理

数据通信之前必须先做好连接工作,在TCP中连接的建立需要三次握手,同时在通信结束时会进行断开连接的处理(四次挥手)。一个连接的建立与断开,正常过程至少需要来回送7个包才能完成。
计算机网络中的五层协议结构
连接的建立和断开

在TCP中,当发送端的数据到达主机时,接收端主机会返回一个已收到消息的通知,这个消息叫ACK(确认应答,Positive Acknowledgement)。如果没有收到ACK,那么很可能出现了丢包或者返回的确认在途中丢失,此外,也可能是由于其他原因,ACK延迟到达。发送方没有收到ACK的话就会进行重发,但是针对延迟和ACK丢失的情况,会存在重复发送和接收。于是我们就引入了一种机制,来识别是否已经接收数据,又能识别是否已经接收。

UDP协议:无连接、不具有可靠性的数据报协议。

UDP是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务当进程将一个报文发送进UDP套接字时,UDP协议并不保证该报文将达到接受进程,而且到达接受进程的报文也可能是乱序到达的

UDP协议应用场景

效率要求相对高,对准确性要求相对低的场景。例如:QQ聊天、在线视频、网络语音电话(即时通讯,速度要求高,但是出现偶尔断续不是太大问题,并且此处完全不可以使用重发机制)、广播通信(广播、多播)。

UDP详解

UDP是User Datagram Protocol缩写。UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。
UDP的存在和特点

  • 无需建立连接(减少延迟)
  • 实现简单:无需维护连接状态
  • 头部开销小
  • 没有拥塞控制:应用可以更好的控制发送时间和发送速率

UDP头部

UDP的头部是由源端口号、目标端口号、包长和校验和组成。checksum主要是用来检测UDP段在传输中是否发生了错误。还有就是,校验和计算中也需要计算UDP伪头部,伪头部包含IP头部的一些字段。我们刚才介绍了识别一个通信需要5项信息,而UDP头部只有端口号,余下的三项在IP头部,所以引入了伪头部的概念。(IPv6的IP头部没有校验和字段)

计算机网络中的五层协议结构
UDP伪头部:目前有一些场景需要兼顾可靠性和高效性


网络层

为主机提供数据传输服务。而传输层协议是为主机中的进程提供数据传输服务。网络层把传输层传递下来的报文段或者用户数据报封装成分组。

任务

负责对数据包进行路由选择和存储转发

  • 负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段和用户数据报封装成分组(IP数据报)或包进行传送。
  • IP协议:逐跳发送模式;根据数据包的目的地IP地址决定数据如何发送;如果数据包不能直接发送至目的地,IP协议负责寻找一个合适的下一跳路由器,并将数据包交付给该路由器转发
  • ICMP协议:因特网控制报文协议,用于检测网络连接

数据接口层

网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧

任务

负责分配MAC地址

  • 两个相邻节点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻的链路上传送帧(frame)。每一帧包括数据和必要的控制信息。
  • 网卡接口的网络驱动程序,处理数据在物理媒介上的传输;不同的物理网络具有电气特性,网络驱动程序隐藏实现细节,为上层协议提供一致接口
  • 常用协议:地址解析协议(ARP)和反地址解析协议(RARP),实现IP地址与机器物理地址(MAC地址)之间的转换

MAC

物理地址是数据链路层和物理层使用的地址


物理层

考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。

各层对应的工作设备

  • 物理层:中继器、集线器
  • 数据链路层:网桥或交换机
  • 网络层中继系统:路由器
  • 网络层以上的中继系统:网关