第二十周

二十周

网络的五层划分是什么?TCP和UDP的区别是什么?简述TCP的三次握手过程。

五层划分是什么?

五层划分是将计算机网络体系机构分层为:应用层、运输层、网络层、数据链路层、物理层。

由于OSI的七层协议体系,复杂又不实用;而TCP/IP协议体系(又称协议族)每层处理内容复杂,不易理解。故综合上述两种提出了5层协议体系为新人讲解网络原理,实际应用中没有此体系。

应用层(application layer)

应用层任务是:通过应用进程间交互来完成特定网络应用。不同的网络应用有不同的应用层协议。如万维网的HTTP协议、支持电子邮件的SMTP协议。应用层交互的数据单元常称为“报文”。

运输层(transport layer)

运输层任务是:为两个主机中进程之间的通信提供通用的数据传输协议。所谓通用,是强调多种应用可以使用同一个运输层服务,因为日常中一台主机常有多个进程。运输层主要使用的协议是:TCP和UDP。

运输层有复用和分用的概念。

网络层(network layer)

网络层任务是:为分组交换网上的不同主机提供通信服务,服务具体是指,把运输层产生的报文段或用户数据报封装成“分组”或“包”进行传送;另一个功能是选择合适的路由,使运输层传下来的分组能够通过路由器找到目的主机。大名鼎鼎的IP协议就属于该范畴。

数据链路层(data link layer)

链路层任务是:将网络层交下来的IP数据报组装成帧(framing),传送到链路的下个节点。

物理层(physical layer)

物理层任务是:发送方发送的比特,接收方如何无误接受。用多大的电压代表比特。物理层还需要处理电缆的插头该有多少根引脚及各引脚应如何连接。但具体的物理层实现并不在物理层协议内,如同轴电缆,无线信道等。

运输层基本概念

复用:应用层所有的应用进程都可以通过运输层再传送到网络层(IP层)。

分用:从网络层收到数据后必须明确交付指明的应用进程。

协议端口:简称端口(protocol port )。虽然通信的终点是应用进程,但我们只要把需传送的报文交到目的主机的某一个合适的目的端口,剩下的工作交由TCP或UDP来完成。

UDP和TCP的首部格式中,都有源端口和目的端口两个字段。当运输层收到IP层交上来的运输层报文时,就能根据目的端口把数据交付应用层的目的应用进程。TCP/IP的运输层用一个16位端口号来标志一个端口。端口号只有本地意义,是标志本计算机应用层中的进程和运输层交互时的层间接口。在因特网中,相同的端口号是没有关联的。

计算机中进程相互通信,不仅必须知道对方的IP地址,还要知道对方的端口号。因此,运输层的端口号共分为两大类:服务器端使用的端口号和客户端使用的端口号。

服务器端使用的端口号

又分两类:熟知端口号和登记端口号。

熟知端口号,数值为0~1023,IANA把这些端口指派给了TCP/IP最重要的一些应用程序,当出现一种新的应用程序后IANA就为它指派一个熟知端口。常见熟知端口如下:

应用程序 FTP DNS HTTP
熟知端口号 21 53 80

另一类登记端口:数值为1024~49151,此类端口是为没有熟知端口号的应用提供的。使用此类端口必须在IANA按规定手续登记。

客户端使用的端口号

客户端使用的端口号,数值为49152~65535,此类端口仅在客户进程运行时才动态选择。

TCP简介

TCP(Transmission Control Protocol)传输控制协议。面向连接的、可靠的数据传输服务(尽管下层线路仍是不可靠的)。

TCP特点

特点 效果
1 面向连接的运输层协议 传送数据前需要建立TCP连接,之后需要释放
2 一条TCP连接只能有两个端点 每条连接都是点对点的
3 提供可靠交付服务 通过TCP连接传送的数据,无差错、不丢失、不重复、并且按续到达
4 提供全双工通信 允许双方的应用进程在任何时候都能发送数据。TCP连接两端都设有发送缓存和接收缓存
5 面向字节流 流指的是流入或流出进程的字节序列。虽然应用进程和TCP的交互时一次一个数据块,但TCP都仅看成是一连串的无结构的字节流。

PS:TCP的连接、可靠传输的工作原理、可靠传输的实现、TCP的流量控制、TCP的拥塞控制、运输连接管理都有相关知识,另外开篇整理。

UDP(User Datagram Protocol)

UDP是用户数据报协议。无连接的,不保证传输可靠性的传输服务。UDP只在IP数据服务之上增加了复用和分用的功能及差错检测的功能。

特点

特点 效果
1 是无连接的 不需要建立连接所以减少了开销和发送数据的延迟
2 尽最大努力交付 不保证可靠交付
3 面向报文的 不论应用层传下来的报文还是IP层传上来的报文,UDP都是添加或去除首部后就交付了。
4 没有拥塞控制 网络出现拥塞时不会使源主机发送速率降低
5 支持一对一,一对多,多对一和多对多的交互通信
6 首部开销小,只有8个字节

UDP首部格式

用户数据报UDP有两个字段:数据字段和首部字段。首部由8个字节,4个字段组成,一个字段两个字节。

  1. 源端口 – 在需要对方回信时使用。不需要时可用全0;
  2. 目的端口 – 在终点交付报文时必须使用到;
  3. 长度 – UDP用户数据报的长度,最小是8(仅有首部);
  4. 检验和 – 检测UDP用户数据报在传输中是否有错。

第二十周

PS: 伪首部只在计算检验和时临时添加,既不向上传送要不向下递交。

TCP和UDP的区别是什么?

  1. 从连接角度考虑:TCP是面向连接,UDP是无连接的;
  2. 从可靠性上:TCP能保证可靠交付,UDP是尽最大努力交付;
  3. 传输数据格式上:TCP是面向字节流的,UDP是面向报文的;

简述TCP的三次握手过程?

TCP的连接建立过程叫做三次握手(three-way handshake)。

一:客户端向服务器发出连接请求报文段,首部中的同步位SYN=1,同时选择初始序号seq = x。客户端进入SYN-SENT(同步已发送)状态。

二:服务器收到请求报文后,如同意建立连接,则向A发送确认。在确认报文中应把SYN位和ACK位置1,确认号是ack = x + 1,选择自己的初始化序号seq = y。服务器进程进入SYN-RCVN(同步已收到)状态。

三:客户端收到服务器的确认后,再向B给出确认。此时TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态。

当服务器收到客户端的确认后,也进入ESTABLISHED状态,即可进行数据传输。

PS:为何需要对服务器进行确认呢?客户端发出的请求可能因为延误,在连接释放后才到达服务器,此时服务器建立连接会导致服务器资源浪费。