计算机网络
一、网络的定义
网络的特点:连线和结点
网络的作用:连通和共享
连通性: 使上网用户之间都可以交换信息(数据,以及各种音频视频),好像这些用户的计算机都可以彼此直接连通一样;注意,互联网具有虚拟的特点,无法准确知道对方是谁,也无法知道对方的位置。
共享性:资源共享,包括:信息共享、软件共享、硬件共享,由于网络的存在,这些资源好像就在用户身边一样,方便使用。
-
主机—终端的网络
以主机为中心,随着计算机技术的发展,早期的计算机均为大型机、中型机、小型机,用户通过终端连接到大型机上(主机),通过批处理方式,共享大型机上的软硬件资源。
特点: 以单处理机为中心的联机网络;集中式控制
缺点: 主机负荷重;可靠性差
-
终端的概念
终端: 是主机的一个远程的输入/输出设备(不是一个自治系统)。早期计算机主机昂贵,一个主机(IBM大型计算机)一般会配置多个终端(Terminal)。这些终端本身不具备计算能力,仅仅承担信息输入输出的工作,运算和处理均由主机来完成。个人计算机可以运行称为终端仿真程序来模仿一个终端的工作。
-
主机—主机的网络
主机—主机的网络:先有广域网后有局域网,多个以主机为中心的网络需要互联,网络从“主机—终端”转为“主机—主机”。主机负责数据处理和通信工作。
解决方案:ARPAnet,4个节点,1969年
ARPA:美国国防部高级研究计划局。
美国国防部认为,如果仅有一个集中的军事指挥中心,万一这个中心被核武器摧毁,全国的军事指挥将处于瘫痪状态,其后果将不堪设想。因此有必要设计一个分散的指挥系统,它由一个分散的指挥点组成,当部分指挥点被摧毁后,其它点仍能正常工作,而这些分散的点口能通过某种形式的通讯网取得联系。
-
局域网的产生
产生原因
第一个处理器:1971年Intel公司发布的4位微处理器Intel 4004;
第一台微型计算机:1971年诞生的;1981年,IBM公司推出微型计算机IBM-PC;80年代以后,微型计算机的迅速发展,彼此需要相互通信(近距离),共享资源。
局域网(Local Area Network,LAN):是指在某一区域内由多台计算机互联成的计算机组。
Internet:70年代,ARPA设立了新的研究项目,解决不同的计算机局域网互联的问题,采用TCP/IP协议,研究人员称之为“Internet”,即“因特网”。
-
互联网发展史
第一阶段:
1990年,ARPAnet解散,Internet从军用转向民用。
1992年,IBM、MCI、MERIT三家公司组件了高级网络服务公司(ANS),建立了ANSnet,从此,Internet开始商业化运作。
1995年4月30日,NSFnet正式宣布停止运作。而此时Internet的骨干网已经覆盖了全球91个国家,主机已超过400万台。
第二阶段:
建成了三级结构的互联网分为主干网、地区网和校园网
第三阶段:
逐渐形成多层次ISP结构的互联网:
出现了互联网服务提供者ISP(Internet Service Provider);
任何机构和个人只要向某个ISP交纳规定的费用,就可从该ISP获取所需IP地址的使用权,并可通过该ISP接入到互联网。
根据提供服务的覆盖面积大小以及所拥有的IP地址数目的不同,ISP也分成不同层次的ISP:
主干ISP、地区ISP、本地ISP -
互联网交换中心Internet eXchange Point(IXP)
不同电信营业商之间连通各自网络而建立的集中交换平台,互联网交换中心在国外简称IX或IXP:
互联网接入产业越发达的区域,IXP的作用越重要,产业越发达。
国内有政府主导建立的北上广互联网交换中心,但因各种运行不够理想,国内知名的第三方IX有位于上海WeIX(驰联网络)、位于北京的CNISP等,以及在北京、上海、广州、天津、杭州均有接入点的CHN-IX。 -
互联网络发展史:“里程碑WWW”世界第一个网站
为了使欧洲各国核物理学家能通过计算机网络及时沟通传递信息进行合作研究,委托他开发一个软件,以便使分布在各国各地物理实验室、研究所的最新信息、数据、图像资料可供大家共享。
1989年仲夏之夜,蒂姆成功开发出世界上第一个Web服务器和第一个Web客户机,1989年12月,蒂姆为他发明正式定名为World Wide Web。1991年5月WWW在Internet上首次露面。
http://info.cern.ch(第一个网页) ,由万维网之父蒂姆.伯纳斯.李在1991年8月6日正式开通。
二、网络体系结构之分层
-
为什么要分层
计算机网络是个非常复杂的系统:
相互通信的两个计算机系统必须高度协调工作才行,而这种“协调”是相当复杂的;
“分层”可以将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
按功能进行抽象分层:
定义层间接口和提供什么服务,层间如何调用服务;
对等层间的必须遵守的规则(协议)。 -
计算机网络体系结构的形成
厂商标准(相同厂商的产品可以互联):
1974年,IBM公司的SNA(系统网络系统结构,面向集中型网络);
1975年,DEC公司的DNA(数字网络体系结构,面向分布型网络);
Univac公司DCA(数据通信体系结构);
Burroughs公司BNA(宝来网络系统结构)。
两种标准:
1983年,Internet采用TCP/IP协议集(事实标准);
1984年,ISO-OSI/RM,开放系统互联参考模型(国际标准);
糟糕的技术(模型和协议都有缺陷)
糟糕的策略(政府和组织的官僚)
糟糕的时机(太晚)
糟糕的实现(庞大,笨拙,缓慢)
由于网络体系结构的不同,不同公司的设备很难相互连通。 -
协议与划分层次
计算机网络中的数据交换必须遵守事先约定好的规则:
这些规则明确规定了所交换的数据的格式以及有关的同步问题(同步含有时序的意思);
网络协议(network protocol),简称为协议,是为进行网络中的数据交换而建立的规则、标准或约定。
例如:
传统教学遵守的教学秩序;
人类社会生活遵守的法律法规;
国际关系的基本准则;
人与人之间交流的基本礼仪等。 -
网络协议的三要素
语法: 数据与控制信息的结构或格式,解决交换信息的格式问题。
语义: 需要发出何种控制信息,完成何种动作以及做出何种响应。解决做什么的问题。
同步: 事件实现顺序的详细说明。什么时间什么条件下做某一特定操作的规定,解决先做什么后做什么的问题。
注意很多条件是不可预测的,不可能有十全十美的协议。
例如课堂上课:
语法:中文授课,教师与学生按中文语法结构交换信息
语义:交换的信息中各字段的含义
同步:教师讲,学生听;教师问,学生答;学生问教师答。
什么时间,什么形式做什么固定操作 -
协议的形式
一种是使用便于人来阅读和理解的文字描述。
另一种是使用让计算机能够理解的程序代码。
这两种不同形式的协议都必须能够对网络上信息交换过程做出精确的解释。 -
分层的原则
层次适度: 层次少,层次功能多,实现困难;层次多,层次功能少,开销大
功能确定: 每个层次有自己的分工,并且有确定的方式完成这些工作、
层次独立: 每个层次的工作,不影响其他层次,层次变化也不影响其他层次
层次关联: 相邻层次间存在一种工作上的联系
层次分合: 层次按实际需求划分,可以合并,分解,也可以取消
两个系统间通信需要满足的条件
层次对等: 双方要有完成相同功能的对等层次
层次协议: 对等层次要遵守一系列共同的规约(协议)
层次接口: 相邻层次间通过接口交互信息 -
分层的优点和缺点
优点:
各层之间是独立的;
灵活性好;
结构上可分隔开;
易于实现和维护;
能促进标准化工作;
缺点:
效率低;
有些功能会在不同的层次中重复出现,因而产生了额外开销; -
各层完成的主要功能
差错控制: 使相应层次对等方的通信更加可靠。
流量控制: 发送端的发送速率必须使接收端来得及接收,不要太快。
分段和重装: 发送端要将发送的数据块划分为更小的单位,在接收端将其还原。
复用和分用: 发送端几个高层会话复用一条低层的连接,在接收端再进行分用。
连接建立和释放: 交换数据前先建立一条逻辑连接,数据传送结束后释放连接。
三、网络体系结构之分类
-
计算机网络体系结构
计算机网络的体系结构(architecture)是计算机网络的各层及其协议的集合:
体系结构就是这个计算机网络及其部件所应完成的功能的精确定义;
实现(implementtation)是遵循这种体系结构的前提下用何种硬件或软件完成这些功能的问题;
体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件 -
具有五层协议的体系结构
OSI的七层协议体系结构的概念清楚,理论也较完整,但它既复杂又不实用。TCP/IP是四层体系结构:应用层、运输层、网际层和网络接口层。但最下面的网络接口层并没有具体内容。因此往往采取折中的办法,即综合OSI和TCP/IP的优点,采用只有五层协议的体系结构。
-
TCP/IP协议发展
1974年,TCP/IP协议产生并公开;
1980年,网络自由协议,网间开始采用TCP/IP;
1983年,ARPAnet接收并采用TCP/IP协议;
应用层:Telnet、FTP、Email、DNS
运输层:TCP、UDP
网际层:ICMP、IGMP、IP、ARP
网络接口层:设备驱动程序及接口卡 -
协议封装的概念
PDU(Protocol Data Unit):协议数据单元
OSI参考模型把对等层次之间传送的数据单位称为该层的协议数据单元PDU
物理传输媒体可看作第0层。
-
实体、协议、服务和服务访问点
实体(entity)表示任何可发送或接收信息的硬件或软件进程。
协议是控制两个对等实体进行通信的规则的集合(水平的)。
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务(功能调用、垂直的、单向的)。
要实现本层协议,还需要使用下层所提供的服务。
本层的服务用户只能看见服务而无法看见下面的协议。即下面的协议对上面的服务用户是透明的。
上层使用服务原语获得下层所提供的服务。 -
服务原语
服务在形式上由一组接口原语(或操作)来描述的:
上层实体向下层实体请求服务时,服务提供者和服务用户间需要交互一些必要的信息,以说明要求服务的一些情况,这些信息即服务原语。
类型(ISO) | 实例:A通过电信公司打电话给B |
---|---|
请求(Request) | A:拨号,向服务提供方电信公司发送“请求”原语 |
指示(Indication) | B:电话响了(显示对方电话号码),收到“指示”原语 |
响应(Response) | B:摘机(拿起电话),发送“响应”原语 |
确认(Confirm) | A:收到“确认”原语(服务提供方发送) |
四、物理层的功能
-
为什么需要物理层
物理层不包含物理介质,而是确定与传输媒体的接口特性:
机械特性:接口所用接线器的一些物理属性,如接口形状,接口尺寸,引线数目及排列;
电器特性:接口电缆的各条线上出现的电压的范围,阻抗匹配,传输速率,距离等;
功能特性:某条线上出现的某一电平的电压的意义,接口部件信号线的用途;
过程特性:对于不同功能的各种可能事件的出现顺序,定义各条物理线路的工作规范和时序关系。
-
物理层的功能和信号类型
主要功能:解决计算机间比特传输问题,即透明地传送比特流,关心的是点到点的问题:
透明传输:指不管所传输的数据是什么样的比特组合,都能够在链路上传输;
要尽可能地屏蔽掉不同传输媒体和通信手段地差异。
信号类型:
铜缆: 基于电平;
光纤: 基于光脉冲;
无线: 基于微博 -
标准地制定者
-
常用物理层标准: RJ45机械特性
五、数据通信的基础
-
基础通信
一个数据通信系统包含三个部分:源系统(发送端、发送方)、传输系统(传输网络)和目的系统(接收端、接收方) -
消息和数据
消息: 消息是客观物质运动或主观思维活动,以及事件发生状态的一种反映,它通过语言、文字、图像和数据等不同形式具体描述;消息不便于传送和交换。
数据: 运送消息的实体。信息在传输之前需要进行编码,编码后的消息就变成了数据(将消息存储到计算机中形成二进制比特流) -
信号和信道
信号: 数据的电气的或电磁的表现。数据在通信线路上传递需要变成电信号或光信号;
模拟信号: 代表消息的参数的取值是连续的;
数字信号: 代表数据的参数是离散的;
信源: 产生和发生数据的源头;
信宿: 接收数据的终点;
信道: 信号传输的通道(传输媒介),一般来表示向某个方向传送信息的介质,一端是发送信道,另一端是接收信道。一条传输介质上可以有多条信道(多路复用)。
信道 | 描述 | 描述 |
---|---|---|
传输信号 | 模拟信道: 传输模拟信号 | 数字信道: 传输数字信号 |
传输介质 | 无线信道 | 有线信道 |
-
三种通信方式
-
基带信号和调制
基带信号( Baseband Signal):信源发出的没有经过调制的原始信号(直接表达了要传输的信息的信号):基带信号往往包含有较多的低频成分,甚至有直流成分,而许多信道并不能传输这种低频分量或直流分量 。因此必须对基带信号进行调制(modulation):
由模拟信号源产生的信号成为模拟基带信号(说话的声波);
由计算机产生的二进制信号称为数字基带信号;
无特别说明, 我们一般指的是数字基带信号。 -
基带传输和宽带传输
基带传输,将基带信号(0和1用两种不同电压表示:编码)直接送到数字信道上传输方式:
传输的是基带信号:近距离传输。
宽带传输, 将基带信号经过调制(带通调制)后送到模拟信道上传输方式,也称为频带传输;
传输的是宽带信号(带通信号 ): 远距离传输;
带通调制,使用载波 (carrier)进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号,这样就能够更好地在模拟信道中传输(即仅在一段频率范围内能够通过信道) 。 -
编码和调制
编码: 数据——>数字信号
调制: 数据——>模拟信号
六、数据链路层的功能
-
为什么需要数据链路
结点: 主机、路由器。
物理层解决了相邻结点透明传输比特的问题 。
物理层没有解决的问题:
传输错误问题: 发送端发送比特1 ,而接收端收到比特0, 接收端无法知道接收的是否正确?
谁接收的问题,多个设备连接问题: 谁能发送数据?数据发送给谁?谁负责接收和处理?
传输结束问题: 如何知道一组数据即将到来?这组数据 何时结束?
比特错误一般为连续比特错误 (外界干扰影响连续比特传输)
离散比特错误不易检测
-
数据链路层信道类型
点对点信道: 这种信道使用一对一的点对点通信方式,控制协议相对简单。
广播信道:使用一对多的广播通信方式,通信过程比较复杂 。广播信道上连接的主机很多,因此必须使用专用的共享协议来协调这些主机的数据发送,控制协议相对复杂。
-
数据链路层基本术语
链路: 结点间的物理通道。是一条无源的点到点的物理线路段(双绞线 、光纤等),中间没有任何其他交换结点。一条链路只是一条通路的一个组成部分。
数据链路: 是结点间的逻辑通道 。除了物理线路以外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路:数据链路 = 链路 + 协议
链路中通信双方的信道使用形式不同,会相应有不同的控制协议。
帧: 链路层协议数据单元,封装网络层的数据报 。
数据链路层: 负责通过一条链路从一个结点向物理链路直接相连的相邻结点传送帧。
网卡实现的物理层和数据链路层协议。
数据链路的例子:
城市交通=街道+汽车交通规则;
铁路交通=铁轨+火车运行规则;
注意:
①.数据链路层像一个数字通道;
②.数据链路层不必考虑物理层如何实现比特传输的细节;
③.甚至还可以更简单地设想好像是沿着两个数据链路层之间
的水平方向把帧直接发送到对方;
-
数据链路层的三个基本功能
-
封装成帧
封装成帧就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。首部和尾部的一个重要作用就是进行帧定界,确定帧的界限。
可以这样理解:
物理层发送的和接收的是一个一个的字母;
数据链路层发送和接收的是一个一个的单词;
接收端无法判别字母传输错误,但可以判别单词错误。 -
如何成帧
当数据是由可打印的ASCII码组成的文本文件时, 帧定界可以使用特
殊的帧定界符。
控制字符SOH (Start Of Header)放在一帧的最前面,表示帧的首部
开始,控制字符EOT(End Of Transmission)表示帧的结束。
-
透明传输
如果数据中的某个字节的二进制代码恰好和SOH或EOT一样,数据链路层就会错误地“找到帧的边界”。
解决方案
①.字节填充 (byte stuffing) 或字符填充 (character stuffing):
发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”;
②.接收端的数据链路层在将数据送往网络层之前删除插入的转义字符;
③.如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。 -
差错检验
在传输过程中可能会产生比特差错:
①.1可能会变成0而0也可能变成1;
②.在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate) 。误码率与信噪比有很大的关系;
③.为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。 -
CRC循环冗余检验(模2运算即异或运算: 不同为1,相同为0, 两0为0)
在数据链路层,广泛使用了循环冗余检验CRC的检错技术:
①.在发送端,先把数据划分为组。假定每组k个比特;
②.假设待传送的一组数据M=101001(现在 k = 6) 。我们在M的后面再添加供差错检测用的n位冗余码一起发送。
n位冗余码的计算:
①.用二进制的模2运算进行2n乘M的运算,这相当于在M后面添加n个0;
②.得到的(k + n)位的数除以事先选定好的长度为 (n + 1)位的除数P,得出商是Q而余数是R,余数R比除数P少1位, 即R是n位;
③.将余数R作为冗余码拼接在数据M后面发送出去。
接收端对收到的每一帧进行CRC检验
①.若得出的余数R=0,则判定这个帧没有差错,就接受(accept)。
②.若余数R≠0,则判定这个帧有差错,就丢弃。
③.但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错。
注意:只要经过严格的挑选,并使用位数足够多的除数P,那么出现检测不到的差错的概率就很小很小。
总结
①.仅用循环冗余检验CRC差错检测技术只能做到无差别接受;
②.无差别接受指:凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错;
③.凡是接收端数据链路层接受的帧都没有传输差错(有差错的帧就丢弃而不接受);
④.想做到“可靠传输”(即发送什么就收到什么),就必须再加上确认和重传机制。
七、网络层的职责
-
为什么需要网络层
数据链路层解决了同一局域网计算机间帧的传输问题,
没有解决以下问题:
①.异构网络互联, 即跨局域网连接和资源共享;
②.互联网络中主机标识问题;
③.互联网中主机间路由选择问题(最佳路径);
④.互联网中数据转发的问题(分组转发) 。
局域网:属于资源子网; 广域网:属于通信子网 -
网络层提供的两种服务
在计算机网络领域, 曾引起了长期的争论的问题: 网络层
应该向运输层提供怎样的服务?
“面向连接” ;
“无连接” 。
争论焦点的实质就是:
在计算机通信中, 可靠交付应当由谁来负责?是网络还
是端系统?
-
一种观点: 让网络负责可靠交付
这种观点认为,应借助于电信网的成功经验,让网络负责可靠交付,计算机网络应模仿电信网络,使用面向连接的 通信方式:
通信之前先建立虚电路 (Virtual Circuit), 以保证双方通信所需的一切网络资源;
如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,不丢失 、不重复 。
H1和H2之间的所有分组都沿着同一条虚电路传送。
电路交换与虚电路的区别
工作层次不同:
电路交换属于物理层概念;
虚电路属于网络层概念,是分组交换
虚电路:结合了电路交换和无连接分组交换的优点
链路占用方式不同:
电路交换的通信双方有一条物理通路, 被通信双方独占;
虚电路是在一条物理线路上虚拟出多个逻辑的通道, 此时该物理线路上可以有多条通信量(共享), 每条通信独占一条虚拟电路 。多个虚拟电路通过时分/频分等多路复用方式复用到一条物理链路上,实现了通信双方虚拟的“点到点的 ”连接。 -
另一种观点:网络提供数据报服务
网络层向上只提供简单灵活的 、无连接的 、尽最大努力交付的数据报服务;
网络在发送分组时不需要先建立连接。每一个分组(即 IP数据报) 独立发送,与其前后的分组无关(不进行编号);
网络层不提供服务质量的承诺。即所传送的分组可能出错 、丢失 、重复和失序(不按序到达终点), 当然也不保证分组传送的时限。 -
两种观点代表
OSI:
根据唯一的网络设备地址路由数据包, 提供流量和拥塞控制以防止网络资源的损耗(虚电路服务) 。
TCP/IP:
网络层向上只提供简单灵活的 、无连接的 、尽最大努力交付的数据报服务(数据报服务) 。
-
尽最大努力交付
由于传输网络不提供端到端的可靠传输服务, 网络中的路由器可以做得比较简单, 而且价格低廉:
如果主机(即端系统)中的进程之间的通信需要是可靠
的, 那么就由网络的主机中的运输层负责可靠交付(包括差错处理 、流量控制等);
这种设计思路的好处是:网络的造价大大降低, 运行方式灵活, 适应多种应用。 -
数据报服务:无连接
-
虚电路服务与数据报服务的对比
八、网际协议IP
-
IP协议
①.网际协议IP是TCP/IP体系中两个最主要的协议之一 。
②.与IP协议配套使用的还有三个协议:
③.地址解析协议ARP;
④.网际控制报文协议ICMP;
⑤.网际组管理协议IGMP 。 -
网际层的IP协议及配套协议
-
虚拟互连网络
①.不同的寻址方案;
②.不同的最大分组长度;
③.不同的网络接入机制;
④.不同的超时控制;
⑤.不同的差错恢复方法。
⑥.不同的状态报告方法;
⑦.不同的路由选择技术;
⑧.不同的用户接入控制;
⑨.不同的服务(面向连接服务和无连接服务);
⑩.不同的管理与控制方式等。
将网络互连并能够互相通信, 会遇到许多问题需要解决 -
使用一些中间设备进行互连
有以下五种不同的中间设备:
• 物理层中继系统: 转发器 (repeater, 中继器);
• 数据链路层中继系统: 网桥 或 桥接器 (bridge);
• 网络层中继系统: 路由器 (router);
• 网桥和路由器的混合物: 桥路器 (brouter);
• 网络层以上的中继系统: 网关 (gateway)。
将网络互相连接起来要使用一些中间设备。
中间设备口称为中间系统或中继 (relay)系统。 -
网络互连使用路由器
①.当中继系统是转发器或网桥时,一般并不称之为网络互连,仅仅是把一个网络扩大了,而这仍然是一个网络 (局域网) 。
②.网关由于比较复杂,目前使用得较少。
③.由于历史的原因,许多有关 TCP/IP 的文献将网络层使用的路由器称为网关。
④.网络互连都是指用路由器进行网络互连和路由选择。 -
互连网络与虚拟互连网络
-
虚拟互连网络的意义
所谓虚拟互连网络也就是逻辑互连网络:
IP协议可以使这些性能各异的网络从用户看起来好像是一个统一的网络;
使用 IP 协议的虚拟互连网络可简称为IP网。
使用虚拟互连网络的好处是:
当互联网上的主机进行通信时, 就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。 -
分组在互联网中的传送
-
从网络层看IP数据报的传送
九、IP地址
-
IP地址及其表示方法
整个互联网看成一个单一的、抽象的网络,IP地址就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围是唯一的32位的标识符(IPV4);
IP地址由互联网名字和数字分配机构ICANN进行分配。 -
IP地址的编址方法
分类的IP地址:
最基础的编址方法,在1981年就通过了相应的标准协议。
子网的划分:
对最基础的编址方法的改进,其标准[RFC 950]在1985年通过。
构成超网:
比较新的无分类编址方法。1993年提出后很快就得到推广应用。 -
分类IP地址
-
各类IP地址的网络号字段和主机号字段
-
点分十进制
-
八位二进制与十进制间转换
-
常用的三种类别的IP地址
十、运输层
- 为什么运输层
- 网络层最终解决的问题:
分组从一台主机经过网络到达另一台主机,即主机到主机间的通信。 - 网络层没有解决的问题:
①.主机中谁发送的数据,谁接收的数据;
②.IP分组无序到达目的主机,接收进程如何处理;
③.网络层的不可靠传输问题
-
传输层的作用
“逻辑通信”的意思是“好像是这样通信”,但事实上并非真的这样通信:
①.从IP层来说,通信的两端是两台主机。但“两台主机之间的通信”这种说法不够清楚;
②.严格地讲,两台主机进行通信就是两台主机中的应用进程相互通信;
③.从传输层的角度看,通信的真正端点并不是主机而是主机中的进程。也就是说,端到端的通信是应用进程之间的通信。
-
TCP与UDP(逻辑信道的差异性)
传输层的逻辑通信信道的差别:
当传输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的,但是这种逻辑通信信道就相当于一条全双工的可靠信道;
当传输层采用无连接的UDP协议时,这种逻辑通信信道是一条不可靠信道;
TCP可靠,UDP不可靠
-
传输层上的协议
用户数据报协议:UDP
传输控制协议:TCP
两个对等运输实体传输的数据单元称为运输协议数据单元TPDU:
TCP传输的数据单位是TCP报文段;
UDP传输的数据单位是UDP报文或用户数据报。
-
UDP和TCP协议特点
UDP协议:
①.不需要先建立连接,提供无连接服务;
②.协议数据单元为UDP报文或用户数据报;
③.收到UDP报文后,无需任何确认;
④.UDP不提供可靠交付;
⑤.简单、支持单播、多播、广播;
⑥.适用于多媒体应用。
TCP协议:
①.提供面向连接的服务;
②.传送的数据单位协议是TCP报文段;
③.TCP不提供广播或多播服务;
④.收到TCP报文段后,需要确认;
⑤.协议复杂,开销大,占用较多的处理机资源;
⑥.应用较多:万维网、电子邮件、文件传输等。
常见应用:
-
IP与TCP/UDP的区别
传输层的UDP用户数据报与网络层的IP数据报有很大区别:
IP数据报要经过互联网中许多路由器的存储转发;
UDP用户数据报是在传输层的端到端抽象的逻辑信道中传输的。
TCP报文段是在运输层抽象的端到端逻辑信道中传送的:
这种信道是可靠的全双工信道;
这种信道不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的运输层是否建立了TCP连接。 -
为什么需要运输层的端口
为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对TCP/IP体系的应用进行标志:
运行在计算机中的进程是用进程标识符来标志的;
但应用层的各种应用进程却不应该当让计算机系统指派它的进程标识符。因为计算机系统的种类很多,不同的操作系统使用不同的进程标识符。
十一、TCP和UDP
-
用户数据报协议-UDP
UDP 只在IP的数据报服务之上增加了很少一点的功能:
①.复用和分用的功能;
②.差错检测的功能。
虽然UDP用户数据报只能提供不可靠的交付, 但UDP在某些方面有其特殊的优点 :
①.不需要建立连接:
. 减少开销和发送数据之前的时延。
②.尽最大努力交付:
. 即不保证可靠交付。
③.面向报文的:
. 一次交付一个完整的报文。
④.没有拥塞控制:
. 网络出现拥塞不会降低源主机的发送速率。
⑤.支持多种交互通信:
. 支持一对一 、一对多 、多对一和多对多的交互通信。
⑥.首部开销小:
. 8 个字节, 比 TCP 的 20 个字节的首部要短。 -
什么是面向报文
①.发送方UDP对应用程序交下来的报文,添加首部后就向下交付IP层;
②.应用层交给UDP多长的报文,UDP就照样发送, 即一次发送一个报文;
③.UDP对应用层交下来的报文,既不合并,也不拆分,保留这些报文的边界;
④.接收方UDP去除UDP报文首部,原封不动地交付上层的应用进程,一次交付一个完整的报文。 -
UDP是面向报文的
①.应用层产生数据交给UDP, UDP打包并直接送到网络层。
②.应用程序必须选择合适大小的报文:
若报文太长,UDP把它交给IP层后,IP层在传送时可能要进行分片,这会降低IP层的效率;
若报文太短,UDP把它交给IP层后,会使IP数据报的首部的相对长度太大,这也降低了IP层的效率。
-
传输控制协议TCP
TCP是面向连接的:
①.TCP连接只能有两个端点,TCP连接是点对点的(一对一);
②.TCP提供可靠交付的服务;
③.TCP提供全双工通信。
面向字节流:
①.TCP中的“流”(stream)指的是流入或流出进程的字节序列;
②.面向字节流的含义是:虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串无结构的字节流 。 -
面向连接的概念
- 面向连接的电路交换(物理层保证可靠):
通信双方之间必须有一条物理连接的通路(直接相连),且被通信双方独享,数据按序发送并按序接收。 - 面向连接的虚电路(网络层保证可靠):
通信双方采用复用技术,逐段占用物理通路,每段物理通路可被多对通信使用,分组按序发送并按序接收 。 - 面向连接TCP(运输层协议保证可靠):
采用协议的方法(确认 、序号 、重传),确保通信双方有一条全双工的、可靠的逻辑信道(事实上,提供服务的IP数据报是不可靠的),字节按序发送并按序接收(但网络层IP数据报并不一定按序到达) 。
注意:
①.TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系。
②.接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。
- TCP面向流的概念
- TCP连接
- TCP把连接作为最基本的抽象:
①.每一条TCP连接有两个端点;
②.TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是运输层的协议端口;
③.TCP连接的端点叫做套接字 (socket) 或插口;
④.端口号拼接到 (cont atenated with) IP地址即构成了套接字 。
套接字 socket = (IP地址 : 端口号)
TCP 连接 ::= {socket 1, socket2}
= {(IP1: port1), (IP2: port2)}
例如:
物流的连接 ::={(寄件人通信地址 : 寄件人), (收件人通信地址: 收件人)}
注意:
①.同一个IP地址可以有多个不同的TCP连接;
②.同一个端口号也可以出现在多个不同的TCP连接中。
十二、应用层
应用层为应用程序的通信提供服务。
- 应用层功能及协议
• 域名服务: DNS;
• 文件传输: FTP;
• 电子邮件: SMTP 、POP3;
• 远程登陆: TELNET;
• WWW服务: HTTP 。 - 工作模式
-
Client/Server
①.服务器:提供网络服务的设备(由硬件和服务软件组成)
永久提供服务;
有永久性访问地址/域名。
②.客户机:请求服务的主机。
与服务器通信,使用服务器提供的服务;
间歇性接入网络;
可能使用动态IP地址;
不与其他客户直接通信。
③.资源集中管理。 -
P2P
• 不存在永远在线的服务器;
• 每个主机既可提供服务, 也可以请求服务;
• 任意端系统/节点之间可以直接通信;
• 节点间歇性接入网络;
• 节点可能改变IP地址;
• 可扩展性好;
• 网络健壮性好;
• 资源分散管理。
-
超文本
-
万维网的工作方式
• 万维网以客户/服务器方式工作。
• 浏览器是用户计算机上的万维网客户程序。
• 万维网文档所驻留的计算机则运行服务器程序,称万维网服务器。
• 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档 。
• 在一个客户程序主窗口上显示出的万维网文档称为页面 (page) 。
• 常用的服务器软件:
• Apache
• Nginx
• IIS
• Tomcat -
万维网必须解决的问题
如何标志分布在整个互联网上的万维网文档?
• 使用统一资源定位符URL来标志万维网上的各种文档;
• 使每一个文档在整个互联网的范围内具有唯一的标识符URL 。
用什么协议实现万维网上各种超链的链接?
• 超文本传送协议HTTP( HyperText Transfer Protocol);
• HTTP是一个应用层协议,它使用TCP连接进行可靠的传送 。
万维网文档如何在互联网上的各种计算机上显示出来,并能清楚地标明超链?
• 超文本标记语言HTML能使得万维网页面的设计者用一个超链从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。
用户如何查找所需的信息?
• 各种的搜索工具(即搜索引擎) 。
十三、统一资源定位符URL
- URL的一般形式
- 本机文件访问与“互联网文件”访问的对比
- URL的部分内容省略情况
①.有些浏览器为了方便用户, 在输入URL时,可以把最前面的“ http://”甚至把主机名最前面的“www”省略,然后浏览器替用户把省略的字符添上。
②.例如,用户只要键入ctrip.com,浏览器就自动把未键入的字符补齐,变成http://www.ctrip.com 。
③.如果WWW服务器监听熟知端口,则“ :80” 也可以省略 。
④.默认访问的WWW根下的index .html等文件名也可以省略。
十四、Http协议和Cookie会话
-
超文本传送协议HTTP
①.HTTP协议永远都是客户端发起请求,服务器回送响应。
②.这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。
③.HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系的。 -
WWW的工作流程
每个WWW服务器运行服务器进程,该进程采用TCP协议,监听TCP80 端口,不断检测是否有浏览器向它发出连接建立请求。
一旦监听到连接建立请求并建立了TCP连接之后,客户端浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应。最后,TCP连接就被释放了。
用户浏览页面的两种方法:
①.URL:在浏览器的地址栏中输入页面的URL;
②.超链接:在页面上鼠标点击某个链接,浏览器自动在互联网上找到链接的页面。
在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和遵循一定的规则。这些格式和规则就是超文本传送协议HTTP。
HTTP规定在HTTP客户与HTTP服务器之间的每次交互,都由一个ASCII码串构成的请求和响应组成。
HTTP报文通常都使用TCP连接传送。 -
HTTP的特点
①.HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输。
②.HTTP协议本身也是无连接的,虽然它使用了面向连接的TCP向上提供的服务。
③.HTTP 是面向事务 的客户服务器协议。
④.HTTP1.0协议是无状态的 (stateless) 。 -
HTTP协议本身是无连接的
无连接的含义: 限制每次连接只处理一个请求 。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
原因: 早期每个客户端与服务器之间交换数据的间歇性较大(即传输具有突发性、瞬时性),并且网页浏览的联想性、发散性导致两次传送的数据关联性很低,大部分通道实际上会很空闲 、无端占用资源。
现在: 网页很复杂,嵌入了很多图片,这时候每次访问图片都需要建立一次TCP连接就显得很低效。
解决办法: Keep-Alive被提出用来解决这效率低的问题。 -
HTTP是无状态的
无状态: 指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态 。即给服务器发送HTTP请求之后,服务器根据请求,发回数据。发送完,不记录任何信息。
①.HTTP请求都是独立的,Keep-Alive没能改变这个结果;
②.如果后续处理需要前面的信息,则必须重传。
优点与缺点: 优点减轻了服务器负荷。缺点每次请求可能会传输重复的内容。无状态的特点严重阻碍了客户端与服务器进行动态交互的Web应用程序,例如购物车程序。
解决办法: Cookie和Session。 -
cookie
万维网站点可以使用Cookie来跟踪用户:
Cookie表示在HTTP服务器和客户之间传递的状态信息。
使用Cookie的网站服务器为用户产生一个唯一的识别码。利用此识别码,网站就能够跟踪该用户在该网站的活动。
Cookie会被附加在每个HTTP请求中,所以无形中增加了流量。
由于在HTTP请求中的Cookie是明文传递的,所以安全性成问题。(除非用HTTPS)
Cookie的大小限制在4KB左右。对于复杂的存储需求来说是不够用的。
-
HTTP的事务
一次HTTP操作称为一个事务,其工作过程可分为四步:
①.首先客户机与服务器需要建立连接 。只要单击某个超级链接,HTTP的工作开始;
②.建立连接后,客户机发送一个请求给服务器;
③.服务器接到请求后,给予相应的响应信息;
④.客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
注意:
①.以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏输出。
②.对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。 -
HTTP面向事务的过程
①.浏览器访问www.baidu.com完整的HTTP事务过程:
②.客户发出http请求;
③.服务器响应http请求;
④.浏览器得到html代码;
⑤.浏览器解析html代码,并请求html代码中的资源(如js、css、图片等 ) ;
⑥.浏览器对页面进行渲染呈现给用户。 -
请求一个WWW文档所需的时间
十五、请求和响应
-
HTTP报文格式
报文由三个部分组成:开始行、首部行和实体主体。
请求报文中,开始行就是请求行。
-
请求方法
“请求方法”就是对所请求的对象进行的操作,因此这些方法实际上也就是一些命令。因此,请求报文的类型是由它所采用的方法决定的。
-
请求报文的一些请求方法
GET: 用来请求已被URI识别的资源,并返回实体主体。
POST: 向指定资源提交数据进行处理(例如提交表单或者上传文件) 。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
HEAD: 类似于GET请求, 只不过返回的响应中没有具体的内容, 用于获 得报文首部 。
PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE: 请求服务器删除指定的页面。
OPTIONS: 允许客户端查看服务器的性能。
TRACE: 回显服务器收到的请求,主要用于测试或诊断。
CONNECT: HTTP/ 1.1协议中预留给能够将连接改为管道方式的代理服务器。 -
URL
“URL”是所请求的资源的URL。
-
版本
“版本”是HTTP的版本。
-
请求报文实例
-
响应报文格式
响应报文的开始行是状态行。
状态行包括三项内容:HTTP的版本,状态码,以及解释状态码的简单短语。
-
响应报文格式(状态码)
状态代码由三位数字组成,第一个数字定义了响应的类别,共分5种类别:
1xx: 指示信息——表示请求已接收,继续处理;
2xx: 成功——表示请求已被成功接收、理解和接受;
3xx: 重定向——要完成请求必须进行更进一步的操作;
4xx: 客户端错误——请求有语法错误或请求无法实现;
5xx: 服务器端错误—— 服务器未能实现合法的请求。
一些例子:
200 OK: 客户端请求成功;
400 Bad Request: 客户端请求有语法错误,不能被服务器所理解;
401 Unauthorized : 认证失败,请求未被接受;
403 Forbidden: 服务器收到请求,但是拒绝提供服务;
404 Not Found: 请求资源不存在,或者输入了错误的URL;
500 Internal Server Error: 服务器发生不可预期的错误;
503 Server Unavailable: 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。 -
HTTP响应报文实例
十六、小结
本章详细的介绍了计算机网络的基础知识,包括:物理层、数据链路层、网络层、传输层、应用层,下一章,大家期待已久的渗透测试就和大家见面了,记得来看哦!!!