概述
因特网概述
- 网络指的是:电信网络、有线电视网络、计算机网络
- 计算机网络向用户提供的功能:
- 连通性:计算机网络使上网的用户都能交换信息
- 共享:即资源共享。
网络的网络
- 网络(network)由若干结点(node)和连接这些结点的链路(link)组成
- 互联网是网络的网络(network of networks)
- 连接在因特网上的计算机都称为主机(host)
注:网络中的Node应译为结点而不是节点
网络和因特网
- 网络把许多计算机连接在一起
- 因特网则把许多网络连接在一起
因特网发展的三个阶段
- 第一阶段是从单个网络ARPANET向互联网发展的过程。
- 第二阶段是建成了三级结构的因特网:主干网、地区网和校园网(或企业网)
- 形成了多层次ISP结构的因特网。(因特网服务提供者ISP,Internet Service Provider)
主机通过ISP连接到因特网中(上网)。
internet和Internet的区别
- internet泛指由多个计算机网络互连而成的网络
- Internet指当前全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,它采用TCP/IP协议族作为通信规则,其前身是美国的单个网络ARPANET
因特网的标准化工作
因特网组成
从因特网的工作方式上看,可以划分为以下两个部分:
- 边缘部分:由所有连接在因特网上的主机组成。这部分是用户直接使用的,用来进行通信和资源共享
- 核心部分: 由大量网络和连接这些网络的路由器组成,这部分是为边缘部分提供服务的(提供连通性和交换)
因特网的边缘部分
处在因特网边缘的部分就是连接在因特网上的所有的主机。这些主机又称为端系统。主机之间的通信实际上是运行在主机上的某个进程(程序)之间的通信。
两种通信方式
在网络边缘的端系统运行的程序之间的通信方式通常可划分为两大类:
- 客户-服务器方式(C/S方式)
- 对等方式(P2P方式)
- 客户-服务器方式
- 客户(client)和服务器(server)都是指通信中涉及的两个应用进程
- 客户-服务器方式所描述的是进程之间服务和被服务的关系
- 客户是服务的请求方,服务器是服务的提供方
客户软件的特点:被用户调用后运行,在打算通信时主动向远程服务器发起通信(请求服务),因此客户程序必须知道服务器程序的地址。
服务器软件的特点:可以同时处理多个远程或本地客户的请求。系统启动后即自动调用并一直不断地运行,被动地等待并接收来自各地的客户的通信请求。因此,服务器程序不需要知道客户程序的地址
- 对等连接方式
- 对等连接(peer-to-peer,简写为P2P2)是指两个主机在通信时不区分哪一个是服务请求方还是服务提供方。
- 只要两个主机都运行了对等连接软件(P2P)软件,它们就可以进行平等的、对等连接通信。
- 对等连接方式从本质上看仍是使用客户-服务器方式,只是对等连接中的每一个主机既是客户同时又是服务器。
因特网的核心部分
- 网络中的核心部分要向网络边缘中的大量主机提供连通性,使边缘中的任何一个主机都能够和其他主机通信(即传送或接收各种数据)。
- 在网络核心部分起特殊作用的是路由器(router)
- 路由器是实现分组交换(packet switching)的关键组件,其任务是转发收到的分组,这是网络核心部分最重要的功能。
分组交换
- 分组交换的传输单元:分组交换网以“分组”作为数据传输单元,依次把各分组发送到接收端。(分组由首部和数据构成)
- 分组首部的重要性:
- 每一个分组的首部都含有地址等控制信息
- 分组交换网中的结点交换机根据收到的分组的首部中的地址信息,把分组转发到下一个结点交换机
- 存储转换机制是指交换机能够开始向链路输出端传输该分组的第一比特之前,必须接收到整个分组。
- 用这种分组交换、存储转发的方式,最后分组就能到达接收端
- 接收端在收到分组后剥去首部还原成报文
路由器
在路由器的输入和输出端口之间没有直接连线
路由器处理分组的过程是:
- 把收到的分组先放入缓存(暂时存储)
- 查找转发表,找到某个目的地址应从哪个端口转发
- 把分组送到适当的端口转发出去。
计算机网络的分类
- 根据作用范围来分:
- 广域网WAN(Wide Area Network)
- 局域网LAN(Local Area Network)
- 城域网MAN(Metropolitan Area Network)
- 个人区域网PAN(Personal Area Network)
- 从网络使用者进行分类
- 公用网(public network)
- 专用网(private network)
- 把用户接入到因特网的网络
- 接入网AN(Access Network),它又被称为本地接入网或居民接入网
- 由ISP提供的接入网只是起到让用户能够与因特网连接的桥梁作用
计算机网络的性能
- 速率:
- 比特bit是计算机中数据量的单位
- 速率即数据量或比特率,速率的单位是b/s,kb/s,Mb/s,Gb/s
- 带宽:是指数字信道所能传送的“最高数据率”
- 吞吐量(throughput):表示在单位时间内通过某个网络的数据量。
- 时延:发送数据时,从发送数据的第一个比特算起到该帧的最后一个比特发送完毕所需的时间
时延
- 传播时延:电磁波在信道中传输所需要的时间
- 处理时延:交换结点为存储转发而进行的一些必要的处理所花费的时间
- 排队时延:结点缓存队列中分组排队所经历的时延
- 发送时延
计算机网络的体系结构
网络协议的组成要素:
- 语法:数据与控制信息的结构或格式
- 语义:需要发出何种控制信息,完成何种动作以及做出何种响应
- 同步:事件实现顺序的详细说明
划分层次的概念举例,比如两个主机交换文件:
计算机网络的体系结构是计算机网络各层及其协议的集合。
体系结构
OSI七层:应用层、表示层、会话层、运输层、网络层、数据链路层、物理层
TCP/IP四层: 应用层、运输层、网际层、网络接口层
五层:应用层、运输层、网络层、数据链路层、物理层
具有五层协议的结构体系结构
- 应用进程数据先传送到应用层,加上应用层首部,成为应用层PDU
- 应用层PDU再传送到运输层,加上运输层首部,成为运输层报文
- 运输层报文再传送到网络层,加上网络层首部,成为数据报
- 数据报再传送到数据链路层,加上链路层首部和尾部,成为数据链路层帧
- 数据链路层帧再传送到物理层,最下面的物理层把比特流传送到物理媒体
- 电信号(或光信号)在物理媒体中传播从发送端物理层传送到接收端物理层。
- 接收端收到数据后采用上述逆序层层剥离首部,直到最终应用进程接收到原始数据。
实体、协议、服务和服务访问点
- 实体:表示任何可发送或接收信息的硬件或软件进程
- 协议:控制两个对等实体进行通信的规则集合
- 在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务
- 要实现本层协议,还需要使用下层所提供的服务
- 本层的服务用户只能看见服务而无法看见协议
- 协议是水平的,即协议是控制对等实体之间的通信规则
- 服务是垂直的,即服务是由下层向上层通过层间接口提供的。
- 同一系统相邻两层的实体进行交互的地方,称为服务访问点SAP(Service Access Point)
路由器转发分组
应用层
- 每个应用层协议都是为了解决某一类应用问题
- 应用层许多协议都是基于客户-服务器方式
域名系统DNS
概述
- 因特网采用层次结构的命名树作为主机的名字,并采用分布式的域名命名系统(Domain Name System,DNS)。
- 主机名到IP地址的解析都是由若干个域名服务器程序完成的,域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。
注:DNS采用UDP传输机制
因特网的域名结构
任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。域名的结构由标号序列组成,各标点之间用点隔开:
xx.三级域名.二级域名.顶级域名
各标号代表不同级别的域名
域名
域名只是个逻辑概念,并不代表计算机所在的物理地点。域名是为了让人类方便记忆,而IP地址是为了让机器进行处理。
- 顶级域名TLD(Top Levl Domain):国家顶级域名、通用顶级域名、基础结构域名
域名服务器
- 一个服务器所负责管辖的(或有权限的)范围叫做区(zone).
- 一个区中的所有结点必须是能够连通的
- 每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射
- DNS服务器的管辖范围不是以域为单位,而是以区为单位。
下图是区的不同划分方法举例:
下图是树状结构的DNS域名服务器:
从上图可知,域名服务器有以下4种类型:
- 根域名服务器:
- 所有的根域名服务器都知道所有顶级域名服务器的域名和IP地址
- 不管是哪一个本地域名服务器,只要自己无法解析,首先求助于根域名服务器
- 在因特网上共有13个根域名服务器(从a-m)
- 顶级域名服务器(TLD服务器):
- 负责管理在该顶级域名服务器注册的所有二级域名
- 权限域名服务器:
- 当一个权限域名服务器不能给出最后的查询回答时,会告诉发出查询请求的DNS客户,下一步应当找哪个权限域名服务器
- 本地域名服务器(默认域名服务器):
- 当一个主机发出DNS查询请求时,这个查询报文首先发送给本地域名服务器
- 每个因特网服务提供者ISP,都可以拥有一个本地域名服务器
域名解析过程
- 主机向本地域名服务器查询一般是采用递归查询。
- 本地域名服务器向根域名服务器的查询通常是采用迭代查询。
文件传送协议
FTP的概述
- 文件传送协议FTP(File Transfer Protocol)是因特网上使用最广泛的文件传送协议
- FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
FTP的基本工作原理
- FTP的特点
- FTP只提供文件传送的一些基本的服务,它使用TCP可靠的运输服务
- FTP使用客户-服务器方式。
- 一个FTP的服务器进程由两大部分组成:一个主进程,负责接收新的请求。一个从属进程,负责处理单个请求。
- 两个连接
FTP在工作过程中会打开两个TCP连接:
- 控制连接:用来控制进程。在整个会话期间一直保持打开,FTP客户发出的传送请求通过控制连接发送给服务器端的控制进程,控制连接不用来传送文件。(端口号21)
- 数据连接:用来传输文件(端口号20)
NFS
- NFS采用另一种思路,它允许应用程序打开一个远程文件,并能在该文件的某一个特定位置上开始读写数据。
- NFS可使用户只复制一个文件中的一个很小的片断,而不需要复制整个大文件
- 在网络上传送的只是少量的修改数据
TFTP
简单文件传送协议TFTP(Trivial File Transfer Protocol):
- TFTP使用客户-服务器方式。并使用UDP数据报。
- TFTP只支持文件传输而不支持交互
- 支持ASCII码或二进制传送
远程终端协议TELNET
- TELNET是一个简单的远程终端协议,也是因特网的正式标准
- 用户用TELNET就可在所在地通过TCP连接注册(登录)到远程的另一个主机上(使用主机名或IP地址)
- TELNET能够将用户的击键传到远程主机,同时也能将远程主机的输出通过TCP连接返回到用户屏幕。
- TELNET使用客户-服务器方式
网络虚拟终端NVT
网络虚拟终端(NVT)是一种虚拟的终端设备,它被客户和服务器所采用,用来建立数据表示和解释的一致性。
TELNET使用网络虚拟终端NVT格式
- 客户软件把用户的击键的和命令转换成NVT格式并交给服务器
- 服务器软件把收到的数据和命令,从NVT格式转换成远程系统所需要的格式
- 向用户返回数据时,服务器把远程系统的格式转换为NVT,本地客户再从NVT格式转换到本地系统所需的格式
万维网WWW
- 万维网WWW(World Wide Web)并非某种特殊的计算机网络
- 万维网是一个大规模的、联机式的信息储藏所
- 万维网用链接的方法能非常方便地从因特网上的一个站点访问另一个站点,这种方式被称为”链接”
万维网提供分布式服务
超媒体和超文本
万维网是分布式超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩充
- 超文本:一个超文本由多个信息源链接成,利用一个链接可使用户找到另一个文档,这些文档可以位于世界上任何一个接在因特网上的超文本系统中,超文本是万维网的基础
- 超媒体:超媒体与超文本的区别是文档内容不同。超文本文档仅包含文本信息,而超媒体文档还包含其他表示方式的信息,如图形、视频、声音等。
万维网的工作方式
- 万维网以客户-服务器方式工作
- 浏览器就是用户计算机上的万维网客户程序,万维网文档所驻留的计算机则运行服务器程序,因此这个计算机也被称为万维网服务器
- 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档
- 在一个客户程序主程序窗口上显示出的万维网文档称为页面。
万维网实现的功能
标记万维网文档
- 使用统一资源定位符URL(Uniform Resource Locator)来标记万维网上的各种文档
- 使每一个文档在整个因特网的范围内具有唯一的标识符URL
实现超链的链接
- 在万维网客户程序与服务器程序之间进行交互所使用的协议,是超文本传送协议HTTP(HyperText Transfer Protocol)
- HTTP是一个应用层协议,它使用TCP连接进行可靠的传送
显示万维网文档
使用超文本标记语言HTML(HyperTexgt Markup Language)显示文档内容
查找信息
可以使用搜索引擎在万维网上查找信息
统一资源定位符URL
URL是对可以从因特网上得到的资源的位置和访问方法的一种表示。它相当于一个文件名在网络范围的扩展,因此,URL是与因特网相连的机器上的任何可访问对象的一个指针。
URL的一般格式
- 主机:是存放资源的主机在因特网中的域名
- 端口和路径有时可省略,若路径省略则URL会指到因特网上的某个主页
HTTP
HTTP的操作过程
用户点击鼠标后发生的事件
- 浏览器分析超链指向页面的URL
- 浏览器向DNS请求解析www.tsinghua.edu.cn 的IP地址
- DNS解析出清华大学服务器的IP地址
- 浏览器与服务器建立TCP连接
- 浏览器发出取文件命令:
GET xxxx/index.html
- 服务器给出响应,把文件Index.html发给浏览器:
HTTP/1.0 200 OK XXX
- TCP连接释放
- 浏览器显示index.html中的所有文本。
HTTP的特点
- HTTP是面向事务的客户服务器协议
- HTTP 协议是无状态、无连接的
非持续连接和持续连接
- 非持续连接(non-persistent connection):每个请求/响应对是经一个单独的TCP连接发送
- 持续连接(persisitent connection):所有请求和响应都是经过相同的TCP连接发送的
非持续连接HTTP:
在非持续连接的情况下,从服务器向客户传送一个Web页面的步骤,假设页面上含有一个HTML基本文件和10个JPEG文件,并且这11个对象位于同一台服务器上。该HTML文件的URL为:http://www.test.com/some/home.index ,我们看看会发生什么:
- HTTP客户进程在端口号80(HTTP默认端口)发起一个到服务器www.test.com 的TCP连接,在客户和服务器上分别有一个套接字与该连接相关联。
- HTTP客户经它的套接字向该服务器发送一个HTTP请求报文,请求报文包含了路径名/some/home.index。
- HTTP服务器通过它的套接字接收该请求报文,从它的存储器(RAM或磁盘)中检索对象www.test.com/some/home.index ,在一个HTTP响应中封装该对象,并通过套接字向客户发送响应报文。
- HTTP服务器进程通知TCP断开该连接。(但是直到TCP确认客户以及完整地收到响应报文为止,它才会实际中断连接)
- HTTP客户接收响应报文,TCP连接关闭。该报文指出封装的对象是一个HTML文件,客户从响应中提取出该文件,检查出HTML文件,得到对应的10个JPEG图形的引用
- 对每个引用的JPEG图形对象重复前4个步骤。
当浏览器收到Web页面后,显示给用户,两个不同的浏览器会以不同的方式解释(即向用户展示)该页面
采用持续连接的HTTP
上述的过程中的一个完整的Web页面可以用单个持续TCP连接进行传送。
HTTP报文格式
请参阅Web安全(2)
Web缓存
Web缓存器(Web cache)也叫代理服务器(proxy server),它是能够代表初始Web服务器来满足HTTP请求的网络实体。Web缓存器有自己的磁盘存储空间,并在存储空间保存最近请求过的对象的副本。举例来说,假定服务器正在请求对象http://www.test.com/hello.gif 就会发生如下情况:
- 浏览器创建一个到Web缓存器的TCP连接,并向Web缓存器中的对象发送一个HTTP请求
- Web缓存器进行检查,查看本地是否存储了该对象的副本。如果有,Web缓存器就向客户浏览器用HTTP响应报文返回该对象
- 如果Web缓存器中没有该对象,它就打开一个与该对象的初始服务器(www.test.com )的TCP连接,Web缓存器在这个缓存器到服务器的TCP连接上发送一个对该对象的HTTP请求,在收到该请求后,初始服务器向Web缓存器发送具有该对象的HTTP响应。
- 当Web缓存器收到该对象时,它在本地空间存储一份副本,并向客户的浏览器用HTTP响应报文发送该副本。
在这个过程中,Web缓存器既是服务器同时又是客户。
Web缓存器通常由ISP购买并安装。
Cookie机制
- 万维网站点使用cookie来跟踪用户
- cookie表示HTTP服务器和客户之间传递的状态信息
- 使用cookie的网站服务器为用户产生一个唯一的识别码。利用此识别码网站就能追踪该用户在该网站的活动。
万维网文档
万维网文档分为静态文档和动态文档
- 静态文档:在文档创作完毕后就存放在万维网服务器中,在被用户浏览的过程中,内容不会改变
- 动态文档:文档内容是在浏览器访问万维网服务器时才由应用程序动态创建
- 动态文档和静态文档之间的主要差别体现在服务器一端,这主要是文档内容的生成方法不同,而从浏览器的角度看,这两种文档并没有区别
通用网关接口CGI
CGI是一种标准,它定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出的结果应如何使用。
- 通用:CGI标准所定义的规则对所有语言通用。
- 网关:CGI程序的作用像网关
- 接口:有一些已定义好的变量和调用等可供其他CGI程序使用。
活动万维网文档
每当浏览器请求一个活动文档时,服务器就返回一段程序副本在浏览器端运行。活动文档程序可与用户直接交互,并可连续地改变屏幕显示。
浏览器的主要组成
浏览器有一组客户、一组解释程序以及管理这些客户和解释程序的控制程序
- 控制程序是其中的核心部件,它解释鼠标的点击和键盘的输入,并调用有关的组件来执行用户指定的操作
- 解释程序:HTML解释程序是必不可少的,而其他解释程序是可选的。
电子邮件
### 电子邮件的标准
- 发送邮件的协议:SMTP
- 读取邮件的协议:POP3、IMAP
- MIME在其邮件首部中说明了邮件的数据类型(如文本、剩余、图像等),使用MIME可在邮件中同时传送多种类型的数据
下图显示了电子邮件的发送过程:
用户代理UA
- 用户代理UA(User Agent)就是用户与电子邮件系统的接口,是电子邮件客户端软件
- 用户代理的功能:撰写、显示、处理和通信
邮件服务器
- 邮件服务器的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况。
- 邮件服务器按照客户服务器方式工作,邮件服务器需要读取和发送两个不同的协议。
- 一个邮件服务器既可以作为客户,也可以作为服务器。
发送电子邮件的几个重要步骤
- 发件人调用PC机中的用户代理撰写和编辑要发送的邮件
- 发件人的用户代理把邮件用SMTP协议发送给发送方的邮件服务器
- SMTP服务器把邮件临时存放在邮件缓存队列中,等待发送
- 发送方邮件服务器的STMP客户与接受方邮件服务器的SMTP服务器建立TCP连接,然后把邮件缓存队列中的邮件依次发送出去
- 运行在接收方的邮件服务器中的SMTP服务器进程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人读取
- 收件人在打算收信时,就运行PC机中的用户代理,使用POP3(或IMAP)协议读取发送给自己的邮件
电子邮件地址的格式
TCP/IP体系的电子邮件系统规定电子邮件地址的格式如下:
收件人邮箱名@邮箱所在主机的域名
fightingtree@neu.org.cn
简单邮件传送协议SMTP
SMTP(Simple Mail Transfer Protocol)所规定的就是在两个互相通信的SMTP进程之间应如何交换信息。
SMTP通信的三个阶段
- 连接建立:连接是在发送主机的SMTP客户和接收主机的SMTP服务器之间建立的,SMTP不使用中间的邮件服务器
- 邮件传送
- 连接释放:邮件发送完毕后,SMTP应释放TCP连接
基于万维网的电子邮件
- 使用这种服务,用户代理就是普通的浏览器,用户和他远程邮箱的通信都是通过HTTP进行。
- 用户访问他自己邮箱中的邮件使用的也是HTTP协议而不是POP3或IMAP协议。
- 当发件人要发送一封电子邮件时,该电子邮件报文从发件人的浏览器发送到她的邮件服务器,使用的是HTTP而不是SMTP协议。但是,发件人的邮件服务器与其他邮件的服务器之间发送和接收邮件时,使用的仍然是SMTP协议。
动态主机配置协议DHCP
动态主机配置协议DHCP(Dynamic Host Configuration Protocol)提供了即插即用连网(plug-and-play networking)的机制。
这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。
DHCP的工作原理
- 需要IP地址的主机在启动时向DHCP服务器广播发送发现报文(DHCPDISCOVER),此时该主机成为DHCP客户
- 本地网络上的所有主机都能收到此广播报文,但只有DHCP服务器才能回答此广播报文。
- DHCP服务器先在其数据库中查找该计算机的配置信息,若找到,则返回找到的信息,若找不到,则从服务器的IP地址池中取一个地址分配给该计算机。DHCP的回答报文叫做提供报文(DHCPOFFER)
- DHCP服务器分配给DHCP客户的IP地址是临时的,因此DHCP客户只能在一段有限的时间内使用这个IP地址,DHCP协议称这段时间为租用期。
DHCP中继代理
并不是每个网络都有DHCP服务器,但是每个网络至少有一个DHCP中继代理,它配置了DHCP服务器的IP地址信息。DHCP中继代理以单播的方式转发发现报文。
注:DHCP报文只是UDP用户数据报中的数据。
应用进程跨域网络的通信
系统调用和应用编程接口
大多数操作系统使用系统调用的机制在应用程序和操作系统之间传递控制权。
应用编程接口API
- 当某个应用进程启动系统调用时,控制权就从应用进程传递给了系统调用接口。
- 此接口再将控制权传递给计算机的操作系统,操作系统将此调用转给某个内部过程,并执行所请求的操作。
- 内部过程一旦执行完毕,控制权就又通过系统调用接口返回给应用进程
- 系统调用接口实际上就是应用进程的控制权和操作系统的控制权进行转换的一个接口
套接字
套接字的作用:
- 当进程需要使用网络进行通信时就发出系统调用,请求操作系统为其创建“套接字”,以便把网络通信所需要的系统资源分配给应用进程
- 操作系统为这些的资源的总和用一个叫做套接字描述符的号码来表示,并把此号码返回给应用进程。应用进程所进行的网络操作都必须使用这个号码
- 通信完毕后,应用进程通过一个关闭套接字的系统调用通知操作系统回收与该“号码”相关的所有资源。
多路复用和多路分解
一个进程有一个或多个套接字(socket),它相当于从网络向进程传递数据和从进程向网络传递数据的门户。因此,运输层实际上并没有直接将数据交付给进程,而是将数据交给了中间的套接字。在任意时刻,主机都可能有不止一个套接字,所以每个套接字都有唯一的标识符。标识符的格式取决于它是TCP还是UDP套接字。
- 将运输层报文段中的数据交付到正确的套接字的工作称为多路分解(demultiplexing)
- 在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层,所有这些工作称为多路复用(multiplexing)
运输层
运输层协议概述
进程间的通信
- 运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
- 当网络的边缘部分有两个主机使用网络的核心部分功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分路由器在转发分组时都只用到下三层的功能。(物理层、数据链路层、网络层)
- 两个主机进行通信实际上就是两个主机中的应用进程互相通信
- 应用进程之间的通信又称为端到端的通信。
- 运输层一个很重要的功能就是复用和分用。应用层不同进程的报文就是通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。
运输层协议和网络层协议的主要区别
运输层的主要功能
- 运输层为应用进程之间提供端到端的逻辑通信(但网络层视为主机之间提供逻辑通信)
- 运输层对收到的报文进行差错检测
- 运输层有两种不同的运输协议:面向连接的TCP和无连接的UDP
TCP和UDP
TCP三次握手
三次握手的目的:为了防止已失效的链接请求报文突然又传送到了服务端,因而产生错误。
TCP四次挥手
四次挥手的目的:AB发生数据,如果A向B发送FIN数据包,B收到后向A发送ACK数据包,A就不会再向B发送数据包,但此时AB的TCP连接处于半关闭状态,B仍然能够向A发送数据包,因此B也要对A发送FIN数据包,从而双向关闭TCP连接。
TCP服务
TCP服务模型包括面向连接服务和可靠数据传输服务,当某个应用程序调用TCP作为传输协议时,该应用程序就能获得来自TCP的这两种服务。TCP应用层能够通过安全套接字SSL(Secure Socket Layer)来加强以提供安全服务。
- 面向连接的服务:TCP三次握手使它们在大量分组的到来之前做好准备。在握手阶段后,一个TCP连接就在两个进程的套接字之间建立了。这条连接是全双工的,当应用程序结束报文发送时,必须拆除该连接。
- 可靠的数据传送服务:通信进程能够依靠TCP。无差错、按适当顺序交付所有发送的数据。当应用程序的一端将字节流传送进套接字时,它能够依靠TCP将相同的字节流交付给接收方的套接字,而没有字节的丢失和冗余。
TCP还具有拥塞机制,当发送方和接收方之间的网络出现拥塞时,TCP的拥塞控制机制会抑制发送进程(客户或服务器)。
TCP拥塞机制
- 慢启动:不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小;
- 拥塞避免:拥塞避免算法让拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍,这样拥塞窗口按线性规律缓慢增长。
- 快重传:快重传要求接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时捎带确认。快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。
- 快恢复:快重传配合使用的还有快恢复算法,当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半,但是接下去并不执行慢开始算法:因为如果网络出现拥塞的话就不会收到好几个重复的确认,所以发送方现在认为网络可能没有出现拥塞。所以此时不执行慢开始算法,而是将cwnd设置为ssthresh的大小,然后执行拥塞避免算法。
TCP保证传输可靠性的方法
- 数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据端超时后会重发数据;
- 对失序数据包重排序:既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对失序数据进行重新排序,然后才交给应用层;
- 丢弃重复数据:对于重复数据,能够丢弃重复数据;
- 应答机制:当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;
- 超时重发:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;
- 流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。
UDP服务
UDP是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务。UDP是无连接的,因此两个进程之间没有握手过程。UDP提供的是一种不可靠的数据传送服务,也就是说,UDP并不保证将报文送达到接收进程,而且,到达进程的顺序可能是混乱的。UDP也没有拥塞机制。
端口
- 运行在计算机中的进程使用进程标识符来标识的。
- 由于不同的操作系统使用不同格式的进程标识符,为了能够使不同操作系统的计算机的应用进程能够相互通信,就必须使用统一的方法对TCP/IP体系的应用进程进行标志
解决上述问题的办法就是在运输层使用协议端口号(只有应用层协议有端口号):
- 端口用一个16位端口号进行标志
- 端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程,在因特网中不同的计算机的相同端口号是没有联系的。
网络层
虚电路
虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发的方式传送,而并不是真正建立了一条物理连接。
网络层设计思路
- 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务
- 网络在发送分组时不需要先建立连接,每一个分组(IP数据报)独立发送,与其前后分组无关
- 网络层不提供服务质量的承诺,即所传送的分组可能出错、丢失、重复、乱序到达,当然也不保证分组传送的时限。
网际协议IP
网络互相连接起来要使用一些中间设备,中间设备又称为中间系统或中继(relay)系统:
- 物理层中继系统:转发器(repeater)
- 数据链路层中继系统:网桥或桥接器(bridge)
- 网络层中继系统:路由器(router)
- 网桥和路由器的混合物:桥路器(brouter)
- 网络层以上的中继系统:网关(gateway)
分组在互联网中的传送如图所示:
分类的IP地址
我们把整个因特网看成一个单一的、抽象的网络,IP地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围内唯一的32位标识符。
地址格式
每一类地址都由两个固定长度的字段组成。其中一个字段是net-id,另一个字段是主机号host-id,它标志该主机(或路由器)。
IP地址中的网络号字段和主机号字段如下图所示:
点分十进制记法
IP地址的特点
- IP地址是一种分等级的地址结构:
- IP地址管理机构在分配IP地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配
- 路由器仅根据目的主机所连接的网络号来转发分组,而不考虑目的主机号
- 实际上IP地址是标志一个主机(或路由器)和一条链路的接口
- 当一个主机同时连接到两个网络上时,该主机必须同时具有两个相应的IP地址,其网络号必须是不同的,这种主机称为多归属主机
- 由于一个路由器至少应当连接到两个网络,因此一个路由器至少应该有两个不同的IP地址
- 用转发器据或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有相同的网络号
如上图所示,在同一个局域网上的主机或路由器的IP地址中的网络号(在同一网段)必须是一样的,路由器的每个接口都拥有不同网络号的IP地址
注:只有在同一网段的主机才能互相通信
ARP和RARP
IP地址和硬件地址
如上图所示,在IP层抽象的互联网上只能看到IP数据报,路由器只根据目的站的IP地址的网络序号进行路由选择。
在具体的物理网络的链路层上,只能看见MAC帧而看不见IP数据报。
所以在数据报传输过程中,需要将IP地址和MAC地址进行转化。
地址解析协议ARP
- 不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
- 每个主机都设有一个ARP高速缓存,里面有所在局域网上的各主机和路由器的IP地址到硬件地址的映射表
- 当主机A欲向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就可查出其对应的硬件地址,在将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。
- ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。如果要找到主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络,剩下的工作就由下一个网络来做
IP层转发分组的流程
网络层的路由器之间使用路由表来进行寻址,根据目的网络地址就能确定下一跳路由器。注:IP数据报的首部没有地方可以用来指出下一跳路由器的IP地址,而是将下一跳路由器的IP地址送交给下层的网络接口软件,ARP将其转换成硬件地址,然后根据这个硬件地址找到下一跳路由器。
划分子网和构造超网
划分子网
划分子网属于一个单位内部的事情,单位对外仍然表现为没有划分子网的网络。
一个IP编址与接口的例子如下图所示:
- 上图IP地址的左侧24比特(即IP地址用.分隔开的前三个部分)相同的网络形成一个子网(subnet),即图中左侧三个主机接口与1个路由器接口的网络形成一个子网。
- IP编码为该子网分配了一个地址:223.1.10/24。其中/24有时称为子网掩码(network mask),指示了32比特中最左侧24比特定义了子网地址。
- 任何要连接到223.1.1.0/24网络的主机都要求其地址具有223.1.1.xxx的形式
一个具有多个以太网段和点对点链路的组织将具有多个子网,在给定的子网上的所有设备都具有相同的子网地址。原则上,不同的子网可以具有完全不同的子网地址。
子网掩码
使用子网掩码可以找出IP地址中的子网部分,IP地址与子网掩码进行与运算可以得出子网的网络地址。
CIDR
因特网的地址分配策略叫做无类别域间路由选择(Classless InterDomain Routing,CIDR)。CIDR将子网寻址的概念一般化了, 因为对于子网寻址,32比特的IP地址被划分为两部分,并且也具有点分十进制数的形式a.b.c.d/x,其中x指示了地址的第一部分中的比特数。地址的x最高比特构成了IP地址的网络部分,并且经常被称为该地址的前缀(prefix),一个组织经常被分配一块连续的地址,即具有相同前缀的一段地址。
构成超网
前缀长度不超过23位的CIDR地址块都包含了多个C类地址,这些C类地址合起来就构成了超网。
国际控制报文协议ICMP
- 作用:网络探测/路由跟踪/错误反馈
- ICMP不是高层协议,而是IP层协议
- ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去
- 使用ping命令发送的就是ICMP数据包(ICMP字段:8 ping请求/0 ping应答/3 目标主机不可达)
ICMP报文的种类
ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文
虚拟专用网VPN和网络地址转换NAT
虚拟专用网VPN
- 本地地址:仅在机构内部使用的IP地址,可以由本机构自行分配,不需要向因特网的管理机构申请
- 全球地址:全球唯一的IP地址,必须向因特网的管理机构申请
虚拟专用网是用隧道技术实现的:
远程接入VPN
比如在外地工作的员工需要和公司保持联系,远程接入VPN可满足这种需求:在外地工作的员工拨号接入因特网,而驻留在员工PC机中的VPN软件可在员工的PC机和公司的主机之间建立VPN隧道,因而外地员工与公司内部通信的内容都是保密的。
网络地址转换NAT
- 需要在专用网连接到因特网的路由器上安装NAT软件,装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球地址IPg
- 所有使用本地地址的主机在和外界通信时都要在NAT路由器上将其本地地址转换成IPg才能和因特网连接。
数据链路层
概述
数据链路层使用的信道主要有以下两种类型:
- 点对点信道。这种信道使用一对一的点对点通信方式
- 广播信道。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送
点对点信道的数据链路层
- 链路是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。(一条链路只是一条通路的一个组成部分)
- 数据链路除了物理线路外,还必须通过通信协议来控制这些数据的传输
- 数据链路上传输的是帧
数据链路的三个基本功能:
- 封装成帧:在一段数据的前后分别添加首部和尾部,确定帧的界限
- 透明传输:字节填充或字符填充
- 差错传输
点对点协议PPP
现在世界上使用得最多的数据链路层协议是点对点协议PPP(Point-to-Point Protocol,PPP)
- 用户到ISP的链路使用PPP协议
局域网的数据链路层
局域网:网络为一个单位所拥有,且地理范围和站点数目均有限
局域网的拓扑结构如下图所示:
数据链路层的两个子层
- 逻辑链路控制LLC(Logical Link Control)子层
- 媒体接入控制MAC(Medium Access Control)子层
与接入到传输媒体有关的内容都放在MAC子层,而LLC子层则与传输媒体无关,不管采用何种协议的局域网对LLC子层来说都是透明的。(一般不考虑LLC子层)
适配器的作用
网络接口板又称为通信适配器(adapter)或网络接口卡NIC(Network Interface Card),或网卡
适配器的重要功能:
- 进行串行/并行转换
- 对数据进行缓存
- 在计算机的操作系统安装设备驱动程序
- 实现以太网协议
以太网
以太网应当指符合DIX Ethernet V2标准的局域网
以太网的MAC层
- 在局域网中,硬件地址又称为物理地址,或MAC地址
- MAC地址实际上就是48位的适配器地址或适配器标识符
适配器检查MAC地址
适配器从网络上每收到一个MAC帧就首先硬件检查MAC帧中的MAC地址。
- 如果是发往本站的帧则收下,然后再进行其他的处理
- 否则就将此帧丢弃,不再进行其他的处理
发往本站的帧包括以下三种: - 单播帧(unicast):一对一
- 广播帧(broadcast):一对全体
- 多播帧(multicast):一对多
网桥
- 在数据链路层扩展局域网的是使用网桥
- 网桥工作在数据链路层,它根据MAC帧的目的地址对收到的帧进行转发
- 网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的MAC地址,然后再确定将该帧转发到哪个接口
物理层
物理层的主要任务描述为确定与传输媒体的接口的一些特性,即:
- 机械特性
- 电气特性
- 功能特性
- 过程特性
通信相关的概念
- 单向通信(单工):只能有一个方向的通信而没有反方向的交互
- 双向交替通信(半双工):通信的双方都能发送信息,但不能双方同时发送(当然也不能同时接收)
- 双向同时通信(全双工通信):通信的双方可以同时发送和接收信息。