网络编程 -- 01 具有五层协议的体系结构

五层协议的体系结构

常见的网络的划分形式有三种协议,划分形式如下图所示:
网络编程 -- 01 具有五层协议的体系结构_第1张图片
学习计算机网络时我们一般采用五层协议的体系结构。

1. 应用层

应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。 包含的主要协议有文件传输协议(FTP)、简单邮件传送协议(SMTP)、远程登陆协议、域名服务协议(DNS)、网络新闻传送协议(NNTP)和超文本传输协议(HTTP)等。

2. 运输层

运输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。 由于一台主机可同时运行多个线程,因此运输层有复用和分用的功能。所谓复用就是指多个应用层进程可同时使用下面运输层的服务,分用则是运输层把收到的信息分别交付给上面应用层中的相应进程。

2.1 运输层协议介绍

运输层主要使用两种协议:传输控制协议TCP(Transmisson Control Protocol)和用户数据协议UDP(User Datagram Protocol)。

2.1.1 UDP协议

UDP协议的特点

  • 无连接;
  • 尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态(这里面有许多参数);
  • 面向报文;
  • 无拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等);
  • 支持一对一、一对多、多对一和多对多的交互通信;
  • 首部开销小(只有四个字段:源端口、目的端口、长度、检验和),只有8个字节,比TCP的20个字节的首部要短。

UDP首部格式
网络编程 -- 01 具有五层协议的体系结构_第2张图片
用户数据报UDP有两个字段:数据字段和首部字段。首部很简单,只有8个字节。有四个字段组成,每个字段长度都是2个字节。各个字段的意义如下:

  • 源端口:在需要对方回信时选用。不需要时可用全0。
  • 目的端口:在终点交付报文时必须使用到。
  • 长度:UDP用户数据报的长度,其最小值为8(仅包含首部)。
  • 检验和:检验UDP用户数据报在传输中是否有错,有错就丢弃。

2.1.2 TCP协议

TCP协议的特点

  • 面向连接。通信之前必须建立连接;
  • 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一);
  • 提供可靠交付的服务。通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达;
  • TCP提供全双工通信。连接建立的双方可以互相发消息,A可以给B发消息,B也可以给A发消息;
  • 面向字节流。TCP中的“流”(stream)指的是流入进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。
  • 首部开销较大,占20字节。

TCP首部格式
网络编程 -- 01 具有五层协议的体系结构_第3张图片
各个字段的作用与含义:

  • 源端口和目的端口: 各占2个字节,分别写入源端口号和目的端口号。

  • 序号: 占4字节,表示在这个报文段中的第一个数据字节序号。

  • 确认号: 占4字节,是期望收到对方下一个报文段的第一个数据字节的序号。

      若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。
    
  • 数据偏移: 占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。

  • 保留: 占6位,保留为今后使用,但目前应置为0。

  • 标志位: 占6位,他们中有多个位置为1,依次为:URG、ACK、PSH、RST、SYN、FIN。

    • 紧急 URG: 当URG=1,表明紧急指针字段有效,用来保证TCP连接不断中断,并督促上层应用赶快处理这些数据。
    • 确认 ACK: 仅当ACK=1时确认号才有效。当ACK=0时,确认号无效。
    • 推送 PSH: 接收方应尽快将这个报文交给应用层,叫做push。所谓push操作就是指在数据包到达接收端以后,立即传送给应用程序,而不是在缓冲区中排队。
    • 复位 RST: 连接复位,复位因主机崩溃或其他原因而出现的错误连接,也可以用于拒绝非法的分段或拒绝连接请求,这个用处还是比较多的。
    • 同步 SYN: 是一个同步序号,通常与ACK合用用来建立连接,也就是常说的三次握手。
    • 终止 FIN: 用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。
  • 窗口: 占2字节。窗口指的是发送报文段的一方的接收窗口。窗口值作为接收方让发送方设置其发送窗口的依据。

  • 检验和: 用于对分段首部和数据进行校验。正常情况下一定为0。

  • 禁止指针: 占2字节。当URG=1,表明紧急指针字段有效,用来保证TCP连接不断中断,并督促上层应用赶快处理这些数据。

  • 选项: 长度可变,最长可达40字节。当没有使用“选项”时,TCP的首部长度是20字节。

2.1.3 运输层协议使用场景

UDP的使用场景: UDP由于不保证消息的可靠性,所以UDP适合发送一些消息不需要保证每条都准确无误到达接收者。例如:视频通信。
TCP的使用场景: 由于TCP能够保证消息的准确性,所有例如游戏信息、文字信息等适用于TCP通信。

3. 网络层

网络层(network layer)负责为分组交换网上的不同主机提供通信服务。 在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在TCP/IP体系结构中,由于网络层使用IP协议,因此分组也叫IP数据报,简称数据报。

网络层的另一个任务就是选择合适的路由,使源主机运输层所传下来的分株,能通过网络层中的路由器找到目的主机。

4.数据链路层

数据链路层(data link layer)通常简称为链路层。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。 在两个相邻节点之间传送数据时,数据链路层将网络层交下来的IP数据报组装程帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。

5.物理层

物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。 使其上面的数据链路层不必考虑网络的具体传输介质是什么。在物理层上所传送的数据单位是比特。

你可能感兴趣的:(java,网络协议,网络,udp,网络通信)