传输层概述

两个主机进行通信实际上就是两个主机中的应用进程互相通信。IP地址是标识在因特网中的一个主机,而不是标识主机中的应用进程。传输层的一个重要功能就是复用和分用。 传输层提供应用进程间的逻辑通信。“逻辑通信”的意思是当应用进程的报文到达传输层后,从效果上看,就好像是直接沿水平方向传送到远地的传输层。

当两台计算机进行通信时,首先要在下列方向取得一致:

  • 计算机一次发送多少信息;
  • 接收到数据后如何验证完整性;
  • 如何确定数据包是否在传输过程中丢失了

传输层提供了端对端数据传输服务,并且在两台计算机之间建立了逻辑连接,主要包含两种协议:TCP与UDP

传输层和网络层

网络层:提供数据转发路径

传输层:提供端到端的连接,不关心数据是如何传输的

传输层为应用进程之间提供逻辑通信,而网络层是为主机之间提供逻辑通信。传输层要对收到的报文进行差错检测,网络层只检测IP数据报的首部中的字段,不检查数据部分

传输层和应用层

应用进程对于数据传输通常有着各种不同的要求,由网络层IP协议提供的数据传输是不可靠的,传输层旨在通过一系列协议和机制来改善该不足

仅使用一种协议很难在高效、可靠性之间达到权衡

为满足不同应用进程的要求,可以按照传输需求分为两类:

  • 强调可靠性,允许少量延迟类
  • 强调高效性,允许部分丢包

传输层的TCP和UDP分别针对这两类应用进程提供服务

  • TCP的特点是面向连接的、可靠的、有序的
  • UDP的特点是面向无连接的、不可靠的、无序的

传输控制协议TCP(Transmission Control Protocol)。是一个基于连接的通信协议,提供可靠的数据传输,TCP提供传输保证,引入了确认、超时重发、流量控制和拥塞控制等机制,使数据正确的、无差错地到达目的地。

用户数据报协议UDP(User Datagram Protocol)。提供端到端的数据报的无连接服务,UDP几乎不进行检查,不确认保证报文到达,不很可靠,但效率较高。

传输层的功能

  1. 连接管理:连接的创建、维护与撤销
  2. 流量控制:网络拥塞控制
  3. 差错检测与恢复
  4. 提供用户要求的服务质量
  5. 提供端到端的可靠通信
  6. 分段与重装:分组大小不同时需要进行分段和重装

TCP协议

TCP概述

当传输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道

通过端口号进行应用识别,TCP协议常见的端口号

端口在进程之间的通信中起作用,UDP和TCP都使用于应用层接口处的端口于上层的应用层进行通信

端口号在0~1024之间的端口为通用端口,遵循相同的标准化方法;

端口号在1024~49151之间的端口为注册端口,用于特定用途;

端口号在49152~65535之间的端口为动态端口,供有任何需求的应用程序使用。

端口号只具有本地意义,各端口独立的分配自己的端口号,为了通信时不发生冲突,必须把端口号和主机的IP地址结合在一起使用

TCP包

可靠传输的实现

滑动窗口协议

在滑动窗口的过程中的最后,发送方如果收不到确认的情况,会停止等待,并且超时重传

流量控制

数据的传送与接收过程当中很可能出现收方来不及接收的情况,这时就需要对发方进行控制以免数据丢失。上面介绍了滑动窗口,如果窗口越大,发送速度也就越大,TCP可以使用控制滑动窗口的大小来进行控制速度,从而控制流量。

三次握手四次挥手

三次握手的目的:消除旧有连接请求的SYN消息对新连接的干扰,同步连接双方的序列号和确认号并交换TCP窗口大小信息。

四次挥手:由于TCP的半关闭特性,TCP连接时双全工(即数据在两个方向上能同时传递),因此,每个方向必须单独的进行关闭。这个原则就是:当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向上的连接。当一端收到一个FIN后,它必须通知应用层另一端已经终止了那个方向的数据传送。即收到一个FIN意味着在这一方向上没有数据流动了。保证服务器与客户端都能完全的接受对方发送的数据。


UDP协议

UDP协议概述

UDP协议提供传输层最基本的功能,也就是负责连接端口的处理工作。用户数据报(UDP)协议提供一种基本的、低时延的数据报传输,适用于一次传输少量突发报文的应用,UDP报头记录封包源端与目的端的连接端口信息,让封包能够正确地送达目的端的应用程序。

当传输层采用UDP协议时,这种逻辑通信信道则是一条不可靠信道传输层提供的可靠的交付是指将数据可靠地交付给接收端的应用层。

同样通过端口号进行应用识别,UDP协议常见的端口号

UDP包

UDP的封装

UDP首部

根据应用层协议的数据传输需求,TCP多用于对数据可靠性有较高要求的应用层协议,例如网页、电子邮件、文件传输等;UDP多用于对延迟容忍度低的应用层协议,比如语音和视频。局部应用协议在实现时既会使用TCP,又会使用UDP。例如DNS,在实现数据的区域传送时将TCP作为传输层协议,而在实现域名解析时则将UDP作为传输层协议


远程访问协议

Telnet协议

远程登录Telnet是一个简单的远程终端协议。用户使用Telnet就可在其所在地通过TCP连接注册(即登录)到远地的另一个主机上。能将用户的操作命令传到远地主机,也能将远地主机输出通过TCP连接返回到用户屏幕。Telnet的默认端口号为23。

Telnet工作原理

使用客户服务器方式。本地系统运行客户进程,远地主机则运行服务器进程。服务器的主进程等待新的请求,从属进程处理每一个连接。定义了网络虚拟终端NVT(Network Virtual Terminal)。其中,客户端就是管理设备,服务器为被管理设备

Telnet协议缺点

不提供服务器认证,客户端无法识别服务器的身份;

用户认证机制简单,仅支持密码认证;

用户认证信息以明文形式传输,容易被窃听;

用户数据以明文形式传输,无机密性可言。

Telnet使用

建立与服务器23端口的TCP连接:

从键盘上输入字符;

把字符串变成NVT格式送给远程服务器;

从远程服务器接收输出的信息;把该信息显示在您的屏幕上。

SSH协议

SSH为Secure Shell的缩写,由IETF的网络小组(Network Working Group)所制定。SSH为建立在应用层基础上的安全协议。SSH是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台一包括HP-UX、Linux、AIX、Solaris、Digital UNIX、lrix,以及其他平台,都可运行SSH。

SSH工作原理

通信模型:C/S
传输层协议:TCP
端口号:22
数据形式:密文

服务器组件会侦听指定的端口,并负责协商安全的连接、认证连接方,并且会衍生(spawn)一个正确的环境给已经认证的客户端。

客户端负责发起与服务器的TCP握手、协商安全连接、验证服务器的身份与之前记录的信息匹配,并且提供认证的凭证。

SSH会话在两个独立的阶段建立,第一个阶段是协商建立加密以保护未来通讯的过程,第二个阶段就是认证阶段。

  • 协商会话加密阶段。协调加密方式,交换计算会话密钥(Diffie-Hellman算法)
  • 认证阶段。一种是密码认证;一种是密钥对认证。

SSH协议的特点

提供服务器认证,客户端可以识别服务器的身份

用户认证机制既支持密码认证,也支持公钥认证

用户认证信息以密文形式传输,或者不传输

用户数据以密文形式传输


电子邮件协议

电子邮件(e-mai)也称电子信箱,是因特网上使用得最多和最受用户欢迎的一种应用。电子邮件将邮件发送到ISP的邮件服务器,并放在其中的收信人邮箱(mail box)中,收信人可随时上网到ISP的邮件服务器进行读取。e-mail不仅可传送文字信息,而且还可附上声音和图像。

电子邮件系统发送过程示意

ARPANET上电子邮件标准是简单邮件传送协议SMTP(Simple Mail Transfer Protocol),它已成为因特网的事实上的标准。

1993年又制定通用因特网邮件扩充MIME(Multipurpose Internet Mail Extensions)。在邮件首部中说明了邮件数据类型。MIME邮件可同时传送多种类型的数据,在多媒体通信环境下非常有用。

电子邮件的主要构建

电子邮件系统由用户代理邮件服务器,以及电子邮件使用的协议3个主要组成部件。

MTA(Message Transport Agent)是邮件传输代理。常用的SMTP服务器(在Outlook或者Netscape Messenger中也经常称为发送服务器或者outgoing服务器)就是MTA。

MUA(Message User Agent)是邮件用户代理,是用户与电子邮件系统的接口。用户代理使用户能够通过一个友好的接口发送和接收电子邮件。常用Outlook,Netscape Messenger,,Foxmail及网易邮件或163邮件的Web界面,都是MUA。

  1. 撰写:给用户提供方便的编辑信件的环境。
  2. 显示:能够方便地在计算机屏幕上将信显示。
  3. 处理:包括发送和接收邮件。

邮件服务器是核心构件,它的功能是发送和接收邮件,并向发信人报告邮件传送的情况。按照客户服务器方式工作,它需要两个协议;SMTP协议发送邮件,端口号为25;POP3协议接收邮件,端口号为109。

SMTP(Simple Mail Transfer Protocol),简单邮件传输协议是在Internet.上发送邮件的协议。邮件从撰写完毕到发送到达收件人信箱的所有网络传输都是依照SMTP的规范来进行的。

POP3(Post Office Protocol,邮局协议)和IMAP(Internet Message Access Protocol,Internet邮件存取协议),邮件在成功发送后通常保存在收件人的信箱里。收件人可以通过POP3和IMAP协议来浏览信件。

电子邮件的发送和接收过程

发信人调用用户代理编辑发送邮件。用户代理用SMTP将邮件传送给发送端邮件服务器。

发送端邮件服务器将邮件放入邮件缓存队列中等待发送。

运行在发送端邮件服务器的SMTP客户进程,向接收端邮件服务器发起TCP的连接。

TCP建立后,SMTP客户开始向远程SMTP服务器进程发送邮件。发送完毕关闭TCP连接。

接收端邮件服务器收到后放入收信人邮箱。

收信人在打算收信时,调用用户代理,使用POP3协议将自己的邮件从接收端邮件服务器的用户邮箱中取回。

电子邮件的组成

电子邮件由信封(envelope)和内容(content)组成。用户不需要填写电子邮件信封上的信息。

TCP/IP体系的电子邮件系统规定电子邮件地址格式: 收信人邮箱名@邮箱所在主机的域名

因特网上每个人的电子邮件地址都是唯一的。发送电子邮件时,邮件服务器只使用电子邮件地址中的后一部分,即目的主机的域名。只有在邮件到达目的主机后,目的主机的邮件服务器才根据电子邮件地址中的前部分将邮件放在收件人的邮箱中。

电子邮件的格式-邮件内容首部包括关键字

**To:**后面填入一个或多个收信人电子邮件地址。
**Subject:**是邮件主题,反映邮件的主要内容。
**Cc:**抄送,表示应给某人发送一个邮件副本。
**Bcc:**盲复写副本,发信人将邮件副本发给某人。
**From和Date:**发信人的电子邮件地址和日期.
Reply-To:即对方回信所用的地址。

SMTP协议

规定在两个相互通信的SMTP进程之间应如何交换信息。使用客户服务器方式工作。

SMTP通信有3个阶段:

  1. 连接建立
    • 发信人先将要发送的邮件发送到邮件缓存。
    • SMTP客户定时对邮件缓存扫描。
    • 使用SMTP的熟知端口号码(25)与目的主机的SMTP服务器建立TCP连接。
    • SMTP不使用中间的邮件服务器。
  2. 邮件传送
    • 首先从MAIL命令开始,MAIL后面有发信人的地址:
    • 其次一个或多个RCPT命令。RCPT是先弄清接收端是否已做好准备,然后才发送;
    • 最后是DATA命令,开始传送邮件的内容。
  3. 连接释放
    • SMTP客户应发送QUIT命令。SMTP服务器返回信息“221(服务关闭)”,表示SMTP同意释放TCP连接。
    • SMTP使用TCP连接并不能保证不丢失邮件。没有端到端的确认返回到发信人处。

SMTP基本工作流程

  • 建立TCP连接
  • 客户端向服务器发送HELO命令以标识发件人自己的身份
  • 服务器端以○K作为响应,表示准备接收
  • 客户端发送RCPT命令
  • 服务器端表示是否愿意为收件人接收邮件
  • 协商结束,发送邮件,用命令DATA发送输入内容
  • 结束此次发送,用QUIT命令退出

文件读取协议

常见的邮件读取协议有两个:

  • 邮局协议第三版本POP3
  • 因特网报文存取协议IMAP

邮局协议POP,是一个脱机协议。

邮局协议POP是一个简单、功能有限的邮件读取协议。POP使用客户/服务器工作方式。

POP服务器只有在用户输入鉴别信息后才允许对邮箱进行读取。

POP服务器是有存储转发功能的中间服务器。

因特网报文存取协议IMAP,是联机协议。

MAP用户可以在不同的地方使用不同的计算机随时阅读和处理自己的邮件,还允许收信人只读取邮件中的某一个部分。

缺点是如果用户没有将邮件复制到自己的PC机上,则邮件一直存放在MAP服务器上。


FTP协议

文件传送协议FTP(File Transfer Protocol)是因特网上使用得非常广泛的文件传送协议

FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件有存取权限。

FTP屏蔽了各计算机系统的细节,适合于在异构网络中任意计算机之间传送文件。

基于TCP的FTP和基于UDP的TFTP都是文件共享协议中的一大类,即复制整个文件其特点是,若要存取一个文件,就必须先获得本地的文件副本。

主要工作原理

使用TCP可靠的传输服务:主要功能是减少或消除不同操作系统下处理文件的不兼容性。

客户/服务器:同时为多个客户进程提供服务。

服务器进程由两部分组成:主进程,负责接受新的请求;若干个从属进程,负责处理单个请求。

工作步骤

  1. 服务端打开默认端口(21),使客户进程能够连接上

  2. 等待客户进程发出连接请求

  3. 启动从属进程处理客户进程发来请求。从属进程对客户进程请求处理完毕终止,但从属进程运行期间根据需要可创建其他子进程。

  4. 回到等待状态,继续接受其他客户进程发来请求。主进程与从属进程是并发地进行的。

FTP的工作模式有两种:主动模式被动模式

主动模式port
在主动模式下,FTP客户端首先与FTP服务器的TCP21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送Port命令。Port命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过其TCP20端口连接到客户端的指定端口发送数据。FTP服务器必须与客户端建立一个新的连接用来传送数据。主动FTP连接过程如下:
命令连接:客户端>1024端口→服务器21端口
数据连接:客户端>1024端口←服务器20端口

被动模式pasv
在被动模式下,建立控制通道时与主动模式类似,但建立连接后发送的不是Pot命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器上的这个端口,然后FTP服务器将通过这个端口传送数据。被动FTP连接过程如下:
命令连接:客户端>1024端口→服务器21端口
数据连接:客户端>1024端口→服务器>1024端口

主动与被动FTP优缺点
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。
被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

FTP协议扩展——TFTP协议

简单文件传输协议TFTP(Trivial File Transfer Protocol)是很小且易于实现的文件传送协议。

TFTP的默认端口号为69

TFTP使用客户/服务器方式,但使用UDP数据报,因此要有自己的差错改正措施。

只支持文件传输,不支持交互,没有庞大的命令集,没有列目录功能,不能对用户进行身份鉴别。

优点:可用于UDP环境;代码所占内存小。

隐患:TFTP是局域网传输文件的通用方式,是普通文件传输协议,不需要用户登录认证,因此有安全隐患。

TFTP与FTP的区别

  1. FTP使用TCP,TFTP使用UDP。

  2. TFTP的功能比FTP少。TFTP不能使用通配符、创建和删除目录、删除文件等;不提供用户名与口令认证。

  3. TFTP的简洁性,所以路由器经常使用TFTP传输访问列表及路由配置信息。