title: 计网
计算机网络的性能指标
-
**速率:**连接在计算机网络上的主机在数字信道上传送比特的速率,也称比特率或数据率。
-
带宽:单位时间内从网络中的某一点到另一点所能通过的“最高数据率”。
-
**吞吐量:**单位时间内通过某个网络(或信道,接口)的数据量。
-
时延:
- 发送时延:分组长度/发送速率///取/网卡发送速率,信道带宽,接口速率最小值
- 传播时延:信道长度(m)/电磁波传播速率(m/s)自由空间: 3 × 1 0 8 m / s 3 \times 10^8 m/s 3×108m/s;铜线: 23. × 1 0 8 m / s 23. \times 10^8 m/s 23.×108m/s;光纤: 2 × 1 0 8 m / s 2 \times 10^8 m/s 2×108m/s
- 处理时延:此处含排队时延等,一般不方便计算。
-
**时延带宽积:**传播时延 X 带宽
- 若发送端连续发送数据,则在所发送的第一个比特即将到达终点时,发送端就已经发送了时延带宽积个比特
- 链路的时延带宽积又称以比特为单位的链路长度
-
**往返时延:**信息双向交互一次所需的时间,RTT(round-trip-time)
-
利用率:
- 信道利用率:用来表示某通道有百分之几的时间是被利用的
- 网络利用率:全网络的信道利用率的加权平均
- 根据排队论,当某信道的利用率增大时,该信道引起的时延也会迅速增加,因此,信道利用率并非越高越好。
- 网络空闲时的时延 D 0 D_0 D0,网络当前的时延D和利用率U之间的关系:
D = D 0 1 − U D=\frac{D_0}{1-U} D=1−UD0
- 在利用率高于50%时,时延会急剧增大,因此较大主干网ISP通常会控制信道利用率不超过50%。当然,信道利用率不能太低,造成通信资源的浪费。
-
**丢包率:**在一定的时间范围内,传输过程中丢失的分组数量与总分组数量的比率。
- 接口丢包率,结点丢包率,链路丢包率,路径丢包率,网络丢包率
- 分组丢失主要有两种情况:1. 分组在传输过程中出现误码,被结点丢弃;2.分组到达一台队列已满的分组交换机时被丢弃;在通信量较大时就可能造成网络拥塞。因此,丢包率反映了网络的拥塞情况。
计算机网络体系结构
- OSI体系结构(七层结构):物理层,数据链路层,网络层,运输层,会话层,表示层,应用层
- TCP/IP体系结构(四层结构):网络接口层,网际层,运输层,应用层
- 原理体系机构(五层机构):物理层,数据链路层,网络层,运输层,应用层
物理层
物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流。
物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么。
物理层协议的主要内容:
- 机器特性:指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置
- 电气特性:指明在接口电缆的各条线上出现的电压的范围
- 功能特性:指明某条线上出现的某一电平的电压表示何种意义
- 过程特性:指明对于不同功能的各种可能事件出现顺序
传输媒体
- 导引型传输媒体:双绞线;同轴电缆;光纤;电力线
- 非导引型传输媒体:微博通信(2~40GHz);无线电波;红外线;可见光
传输方式
- 串行传输/并行传输
- 同步传输/异步传输
- 单工,单向通信/半双工,双向交替通信/全双工,双向同时通信
数据链路层
使用点对点信道的数据链路层:封装成帧、差错检测、可靠传输
使用广播信道的数据链路层:1.共享式以太网的媒体接入控制协议CSMA/CD;2. 802.11局域网的媒体接入控制协议CSMA/CA
数据链路层的互连设备
1.网桥和交换机的工作原理;2.集线器与交换机的区别
-
封装成帧
指数据链路层给上层教父的协议数据单元添加帧头和帧尾使之成为帧。
- 帧头和帧尾中包含有重要的控制信息
- 帧头和帧尾的作用之一是帧定界
-
差错检测
比特差错:比特在传输过程中可能产生差错,0变1,1变0
误码率(BER):在一段时间内,传输错误的比特占传输比特总数的比率
- 奇偶校验:在待发送的数据后面添加1位奇偶校验位,使整个数据中“1”的个数为奇数(奇校验)或偶数(偶校验)
- 循环冗余校验CRC:收发双方约定好一个生成多项式G(x),发送方基于待发送的数据和生成多线式计算出差错检验码(冗余码),将其添加到待传输数据的后面一起传输,接受方通过生成多项式来计算收到的数据是否产生了误码。
-
可靠传输
数据链路层向上层提供的服务:1.不可靠传输服务:丢弃有误码的帧;2.可靠传输服务:通过一定手段实现帧的无误码。
一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。
无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上提供可靠传输服务。
传输差错:比特差错,分组丢失,分组失序,分组重复
可靠传输服务不仅局限于数据链路层,其他各层均可选择实现可靠传输
可靠传输的实现机制:
-
停止等待协议SW
接收端检测到数据分组误码时,将其丢弃并等待发送方的超时重传。但对于误码率较高的点对点链路,为使发送方尽早重传,也可给发送方发送NAK分组。
为了让接收方能够判断所接受到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等特性,只需1个比特编号就够了,即0和1。
为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号。
超时计时器设置的重传时间应仔细选择。一般可将重传时间选为略大于“从发送方到接受方的平均往返时间”。
当往返时延RTT远大于数据帧发送时延 T D T_D TD时(如卫星链路),信道利用率非常低。
-
回退N帧协议GBN
-
选择重传协议SR
-
-
信道复用
复用是通过一条物理线路同时传输多路用户的信号。当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的宽度。
- 频分复用FDM
- 时分复用TDM
- 波分复用WDM
- 码分复用CDM
码片:CDMA中每一个比特时间再划分后的时间间隔。一般再划分为64或128个短间隔。
-
CSMA/CD协议,Carrier Sense Multiple Access with Collision Detectio 载波侦听多路访问/冲突检测
-
工作原理
多点接入MA:多个主机连接在一条总线上,竞争使用总线;
载波监听CS:发送帧前先检测总线,若总线空闲96比特时间,则立即发送;若总线忙。则持续检测总线直到总线空闲96比特时间后再重新发送;
碰撞检测到CD:边发送边检测碰撞。若检测到碰撞,则立即停止发送,退避一段时间后再重新发送;
-
以太网的争用期
发送帧的主机最多经过以太网端到往返传播时延 2 τ 2\tau 2τ,就可检测到本次传播是否发生了碰撞, 2 τ 2\tau 2τ为争用期;
经过争用期这段时间还没检测到碰撞,才能肯定这次发送不会发生碰撞;
以太网规定 2 τ 2\tau 2τ的取值为512比特时间(即发送512比特所耗费的时间),对于10Mbps的以太网, 2 τ 2\tau 2τ为 512 μ s 512\mu s 512μs;
-
以太网的最小帧长和最大帧长
最小帧长=争用期x信道带宽,对于10Mbps的传统以太网。其争用期为 51.2 μ s 51.2\mu s 51.2μs,因此最小帧长为512b,即64字节;
以太网的最小帧长确保了主机可在帧发送完成之前就检测到该帧的发送过程中是否遭遇了碰撞。如果检测到碰撞,则停止发送帧的剩余部分,退避一段随机事件后,重新发送该帧;
为了防止主机长时间占用总线,以太网的帧也不能太长;以太网V2的MAC帧最大长度为1518字节;插入VLAN标记的802.1Q帧最大长度为1522字节
-
截断二进制指数退避算法
随机退避时间=争用期 2 τ 2\tau 2τx随机数r,其中r从离散的整数集合 0 , 1 , . . . ( 2 k − 1 ) {0,1,...(2^k-1)} 0,1,...(2k−1)中随机取出一个,k=Min {重传次数,10};
当重传次数达16次仍不能成功时,这表明同时打算发送数据的主机太多以至于连续发送碰撞,则丢弃该帧并向高层报告。
-
以太网的信道复用率
S ↑ = 1 1 + τ T 0 ↓ S\uparrow=\frac{1}{1+\frac{\tau}{T_0}\downarrow} S↑=1+T0τ↓1 -
CSMA/CD协议曾用于各种总线结构以太网和双绞线以太网的早期版本中。现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用该协议。
-
-
CSMA/CA协议,Carrier Sense Multiple Access with Collision Avoid 带有冲突避免的载波侦听多路访问
-
MAC(Media Access Control)地址:以太网的MAC子层所使用的地址/数据链路层
MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也称硬件地址;
MAC地址有时也被称为物理地址。
MAC地址是对网络上各接口(网卡,有线网卡,无线网卡等)的唯一标识,而不是对网络设备的唯一标识
MAC地址第一字节的低位第一位和第二位分别标识网卡的单播0/多播1,全球管理0/本地管理1。如
38-D5-47-7A-94-42,38->00110100
后两位00,则为全球单播地址 -
IP地址:TCP/IP体系机构网际层所使用的地址/网际层
IP地址是因特网上的主机和路由器所使用的地址,用于标识两部分信息:
- 网络编号:标识因特网上的网络
- 主机编号:表示同一网络上不同主机(或路由器)
- 例:192.168.1.2 -->网络编号.主机编号
如果只有一个单独的网络,不接入因特网,可以值使用MAC地址;如果主机所在的网络需要接入因特网。则IP地址和MAC地址都需要使用。
数据包转发过程中IP地址与MAC地址的变化情况:
- 源IP地址和目的IP地址保持不变;
- 源MAC地址和目的MAC地址逐个链路改变。
-
ARP协议属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址/网际层
源主机在自己的ARP高速缓存表中查找目的主机的IP地址所对应的MAC地址,若是找到了,则可以封转MAC帧进行发送;若是找不到,则发送ARP请求(封装在广播MAC帧中)
目的主机收到ARP请求后,将源主机的IP地址与MAC地址记录到自己的ARP高速缓存表中,然后给源主机发送ARP响应,ARP响应中包含有目的主机的IP地址和MAC地址
源主机收到ARP响应后,将目的主机的IP与MAC地址记录到自己的ARP高速缓存表中,然后就可以封装之前想发送的MAC帧并发送给目的主机。
ARP的作用范围:逐段链路或逐个网络使用。
除ARP请求和响应外,ARP还有其他类型的报文(如检查IP地址冲突的“无故ARP、免费ARP”)
ARP没有安全验证机制,存在ARP欺骗(攻击)问题。
-
集线器HUB
早期以太网的互连设备
工作在OSI体系结构的物理层
对接收到的信号进行放大转发
使用集线器作为互连设备的以太网仍属于共享以太网。集线器互连起来的所有共享总线带宽,属于同一个碰撞域和广播域。
-
交换机SWITCH
目前以太网中使用最广泛的互连设备
工作在OSI体系结构的数据链路层(也包括物理层)
根据MAC地址对帧进行转发
使用交换机作为互连设备的以太网,称为交换式以太网。交换机可以根据MAC地址过滤帧,即隔离碰撞域
交换机的每一个接口是一个独立的碰撞域
交换机隔离碰撞域但不隔离广播域(VLAN除外)
-
以太网交换机的生成树协议STP
-
如何提高以太网的可靠性:
添加冗余链路可以提高以太网的可靠性。但冗余链路也会带来负面效应——形成网络环路
-
网络环路会带来以下问题:
广播风暴:大量消耗网络资源,使得网络无法正常转发其他数据帧
主机收到重复的广播帧:大量消耗主机资源
交换机的帧交换表震荡(偏移)
-
以太网交换机使用生成树协议STP(Spanning Tree Protocol),可以增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题
不论交换机之间采取怎样的物理连接,交换机都能够自动计算并构建一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树型的
最终生成的树型逻辑拓扑要确保连通整个网络
当首次连接交换机或网络物理拓扑发送变化时(人为或故障),交换机都能进行生成树的重新计算。
-
-
虚拟局域网VLAN(Virtual Local Area Network)
是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求。
IEEE 802.1Q帧(Dot One Q帧)对以太网的MAC帧格式进行了扩展,插入了4字节的VLAN标记
VLAN标记的最后12比特称为VLAN标识符VID,它唯一标识了以太网帧属于哪一个VLAN。VID的有效取值范围是
1~4094
802.1Q帧是由交换机来处理的,而不是用户主机来处理的。
当交换机收到普通的以太网帧时,会将其插入4字节的VLAN标记转变为802.1Q帧,简称“打标签”。
当交换机转发802.1Q帧时,可能会删除其4字节VLAN标记转变为普通以太网,简称“去标签”。
交换机的端口类型:
-
Access
连接用户计算机
只能属于一个VLAN
PVID与端口所属VLAN的ID相同,默认为1
接收处理方法:一般只接收未打标签的普通以太网帧,并给其打标签
发送处理方法:若帧中的VID等于端口PVID,则去掉标签并转发;否则丢掉。
-
Trunk
交换机之间或交换机与路由器之间的连接
可以属于多个VLAN
用户可以设置PVID,默认为1
接受处理方法:接收已打标签的帧;接受未打标签的帧,根据端口的PVID值给帧打标签
发送处理方法:帧中VID等于端口PVID,去掉标签再转发;帧中VID不等于端口PVID,直接转发。
-
Hybrid
-
网络层
-
IP数据报的发送和转发
主机发送IP数据报
判断目的主机是否与自己在同一个网络(源主机IP地址与子网掩码相与,得到网络地址,目的地址与子网掩码相与得到目的主机网络地址,若相同则在同一个网络中)。若在同一个网络,则属于直接交付;否则,属于间接交付,传输给主机所在网络的默认网关(路由器),由默认网关帮忙转发。
路由器转发IP数据报
1.检查IP数据报首部是否出错。若出错,则直接丢弃并通告源主机;否则,进行转发。2.根据IP数据报的目的地址在路由器表中差找匹配的条目。(默认网关与子网掩码相与,再与目的地址进行比较),若匹配,则转发给条目中指示的下一跳,否则,丢弃并通告源主机。
-
静态路由配置
静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表。(一般只在小规模网络中采用)
使用静态路由配置可能产生路由环路问题,原因有:1.配置错误;2.聚合了不存在的网络;3.网络故障。
路由条目的类型:
直连网络;静态网络(人工配置);动态路由(路由选择协议)
特殊的静态路由条目
默认路由(目的网络为0.0.0.0,地址掩码为0.0.0.0);特定主机路由(目的网络为特定主机的IP地址,地址掩码为255.255.255.255);黑洞路由(下一跳为null0,解决聚合路由中不存在的网络问题)
-
IPv4数据报的首部格式
可变部分(40字节)
可选字段 1~40字节,用来支持排错、测量及安全等措施。
填充字段 确保首部长度为4字节的整数倍。使用全0进行填充。
固定首部(20字节)
版本 4比特,表示IP协议的版本。通信双方使用的IP协议的版本必须一致。
首部长度 4比特,表示IP数据报首部长度。该字段的取值以4字节为单位。最小十进制取值为5,表示IP数据报首部只有20字节固定部分。最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分。
区分服务 8比特,用来获取更好的服务。一般不使用该字段。
总长度 16比特,表示IP数据报的总长度(首部+数据载荷)。最大取值为十进制的65535,以字节为单位。
标识 16比特,属于同一个数据报的各分片数据报应该具有相同的标识。IP软件维持一个计数器,每产生一个数据报,计数器+1,并将此值赋给标识字段。
标志 3比特,各比特含义如下:DF位:1-不允许分片;0-允许分片。MF位:1-后面还有分片;0-这是最后一个分片。保留位:必须为0.
片偏移 13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位,片偏移以8字节为单位。
生存时间TTL 8比特,表示IP数据报的生存时间。最初以秒为单位,最大生存周期为255s;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃。现在以“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。
IP数据报没经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间,标志,片偏移等)的取值可能发生变化。
协议 9比特,指明IPv4数据报的数据部分是何种协议数据单元。常用的一些协议和相应协议字段值如下:
协议名称 ICMP IGMP TCP UDP IPv6 OSPF 协议字段值 1 2 6 17 41 89 首部检验和 16比特,用来检测首部在传输过程中是否出现差错。比CRC检验码简单,称为因特网检验和。
由于IP层本身并不提供可靠传输的服务,并且计算首部校验和是一项耗时的操作,因此在IPv6中,路由器不在计算首部校验和,从而更快转发IP数据报。
源IP地址和目的IP地址 各32比特,用来填写发送该IP数据报的源主机IP地址和接收该IP数据报的目的主机IP地址。
-
虚拟专用网VPN与网络地址转换NAT
虚拟专用网VPN(virtual private network)
利用公用的因特网作为本机构各专用网络之间的通信载体,这样的专用网又称虚拟专用。
同一机构内不同部门的内部网络所构成的虚拟专用网VPN又称为内联网VPN。
VPN要保证传输数据的安全性,会将原始的内部数据进行加密,然后再将其封装成为再因特网上发送的外部数据报。
有时一个机构的VPN需要有某些外部机构参加进来。这样的VPN称为外联网VPN。
在外地工作的员工需要访问公司内部的专用网络时,只要在任何地点接入到因特网,运行驻留在员工PC中的VPN软件,在员工的PC和公司的主机之间建立VPN隧道,即可访问专用网络的资源。这种VPN称为远程接入VPN。
专用(私有)地址:
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
网络地址转换NAT(network address translation)
由于IP地址的紧缺,一个机构能够申请到的IP地址数量玩玩远远小于本机构所拥有的主机数量。因此,虚拟专用网中的各主机所分配的地址应该是本机构可自由分配的专用地址,而不是需要申请的、在因特网上使用的共有地址。
NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。
由于绝大多数的网络应用都是使用运输层协议TCP或UDP来传送数据,因此可以利用运输层的端口号和IP地址一起进行转换。这样用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP地址一起进行转换的技术叫作网络地址与端口号转换NAPT(network address and port translation)
对于一些P2P网络应用,需要外网主机主动与内网主机进行通信,在通过NAT时会遇到问题,需要网络应用自己使用一些特殊的NAT穿越技术来解决问题。
由于NAT对外网屏蔽了内网主机的网络地址,能为内网的主机提供一定的安全保护。
运输层
运输层直接为应用进程间的逻辑通信提供服务。
运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道。根据应用需求的不同,因特网的运输层为应用提供了两种不同的运输协议,即面向连接的TCP和无连接的UDP。
-
UDP和TCP的对比
用户数据报协议UDP(user datagram protocol)
无连接;支持一对一,一对多,多对一和多对多的交互通信;对应用层交付的报文直接打包;不可靠传输,不使用流量控制和拥塞控制;首部开销小,仅8字节(源端口-2,目的端口-2,长度-2,检验和-2)。
传输控制协议TCP(transmission control protocol)
面向连接;每条TCP连接只能由两个端点EP,只能是一对一通信;面向字节流;可靠传输,使用流量控制和拥塞控制;首部最小20字节,最大60字节。
-
TCP的流量控制
流量控制:使发送方的发送速率不要太快,要让接收方来得及接收。
利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制,TCP接收方利用自己的接收窗口的大小来限制发送方发送窗口的大小;TCP发送方收到接收方的零窗口通知后,应启动持续计时器,持续计时器超时后,向接收方发送零窗口探测报文。
-
TCP超时重传时间的选择
RFC6298建议使用下式计算超时重传时间RTO:
R T O = R T T S + 4 × R T T D RTO = RTT_S+4\times RTT_D RTO=RTTS+4×RTTD
加权平均往返时间 R T T S RTT_S RTTS
R T T S 1 = R T T 1 新的 R T T S = ( 1 − α ) × 旧的 R T T S + α × 新的 R T T 样本 0 ≤ α ≤ 1 ( 推荐 α 的值为 0.125 ) RTT_{S1}=RTT_1\\ 新的RTT_S=(1-\alpha) \times 旧的RTT_S+\alpha \times 新的RTT样本\\ 0\leq \alpha \leq 1 (推荐\alpha的值为0.125) RTTS1=RTT1新的RTTS=(1−α)×旧的RTTS+α×新的RTT样本0≤α≤1(推荐α的值为0.125)
RTT偏差的加权平均 R T T D RTT_D RTTD
R T T D 1 = R T T 1 ÷ 2 新的 R T T D = ( 1 − β ) × 旧的 R T T D + β × ∣ R T T S − 新的 R T T 样本 ∣ 0 ≤ β ≤ 1 ( 推荐 β 值为 0.25 ) RTT_{D1}=RTT_1 \div 2\\ 新的RTT_D=(1-\beta) \times 旧的RTT_D+\beta \times |RTT_S-新的RTT样本|\\ 0 \leq \beta \leq 1 (推荐\beta值为0.25) RTTD1=RTT1÷2新的RTTD=(1−β)×旧的RTTD+β×∣RTTS−新的RTT样本∣0≤β≤1(推荐β值为0.25) -
TCP可靠传输的实现
TCP基于以字节为单位的滑动窗口来实现可靠传输
发送方在未收到接受方的确认时,可将发送窗口内还为发送的数据全部发送出去;
接收方只接收序号落入发送窗口内的数据。
虽然发送方的发送窗口是根据接收方的接收窗口设置的,但同在同一时刻,发送方的发送窗口并不总是和接收方的接收窗口一样大
网络传送窗口需要经历一定的时间滞后,并且这个时间还是不确定的;
发送方可能根据网络当时的拥塞情况适当减小自己的发送窗口尺寸。
对于不按序到达的数据应如何处理,TCP并无明确规定
如果接收方把不按序到达的数据一律丢弃,那么接收窗口的管理将会比较简单,但这样对网络资源的利用不利,因为发送方会重复发送较多的数据;
TCP通常对不按序到达的数据是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。
TCP要求接收方必须有累积确认和捎带确认机制,这样可以减小传输开销。接收方可以在合适的时候发送确认,也可以在自己有数据要发送时把确认信息顺便捎带上
接收方不应过分推迟发送确认,否则会导致发送方不必要的超时重传,这反而浪费了网络资源。TCP标准规定,确认推迟时间不应超过0.5s;
捎带确认实际上并不经常发生,因为大多数应用程序很少同时在两个方向上发送数据。
TCP的通信是全双工通信。通信中的每一方都在发送和接收报文段。因此,每一方都有自己的发送窗口和接收窗口。
-
TCP的连接建立
TCP的连接建立要解决以下三个问题:
1.使TCP双方能够确知对方的存在;2.使TCP双方能够协商一些参数(如最大窗口值,是否使用窗口扩大选项和时间戳选项以及服务质量等);
3.使TCP双方能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。
TCP使用“三报文握手”建立连接
相对于“两报文握手”,“三报文”是为了防止已失效的连接请求报文段突然又传送到了TCP服务器,因而导致错误及资源浪费。
-
TCP连接释放
TCP通过“四报文挥手”来释放连接
由TCP客户端主动发起释放。
MSL(maximum segment lifetime) 最长报文段寿命,RFC793建议2分钟,可根据具体情境设置。
为防止TCP客户端出现故障,TCP服务器进程每收到一次TCP客户进程的数据,就重新设置并启动保活计时器(2小时定时)。
若保活计时器定时周期内未收到TCP客户进程发送来的数据,则当保活计时器到时后,TCP服务器进程就向TCP客户进程发送一个探测报文段,以后则每隔75s发送一次。若10个连续的探测报文段后仍无TCP客户进程的响应,TCP服务器进程就认为TCP客户进程所在主机出现了故障,接着就关闭这个连接。
-
TCP报文段的首部格式(20~60字节)
固定首部(20字节)
源端口 16比特,写入源端口号,用来标识发送该TCP报文段的应用进程。
目的端口 16比特,写入目的的端口号,用来标识接收该TCP报文段的应用进程。
序号 32比特,取值范围[0, 2 3 2 − 1 2^32-1 232−1],序号增加到最后一个后,下一个序号就又回到0。指出本TCP报文段数据载荷的第一个字节的序号。
确认号 32比特,取值范围[0, 2 3 2 − 1 2^32-1 232−1],确认号增加到最后一个后,下一个确认号就又回到0。指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认。
数据偏移 4比特,以4字节为单位(取值范围十进制值5~15)。用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远。
保留 6比特,保留为今后使用,目前应置为0。
URG 紧急标志位,取值1时紧急指针字段有效;取值0时无效。
ACK 取值为1时确认号字段才有效;取值为0时确认号字段无效。
PSH 推送标志位,接收方的TCP收到该标志位为1的报文段会尽快上交应用进程,而不必等到接收缓存都填满后再向上交付。
RST 复位标志位,用来复位TCP连接。当RST=1时,表明TCP连接出现了异常,必须释放连接,然后再重新建立连接。RST置1可以用来拒绝一个非法的报文段或拒绝打开一个TCP连接。
SYN 同步标志位,在TCP连接建立时用来同步序号。
FIN 终止标志位,用来释放TCP连接。
窗口 16比特,以字节为单位。指出发送本报文段的一方的接收窗口。窗口值作为接收方让发送方设置其发送窗口的依据。这是以接收方的接受能力来控制发送方的发送能力,称为流量控制。
校验和 16比特,检查范围包括TCP报文段的首部和数据载荷两部分。在计算校验和时,要在TCP报文段的前面加上12字节的伪首部。
紧急指针 16比特,用来指明紧急数据的长度。当发送方有紧急数据时,可将紧急数据插队到发送缓存的最前面,并立刻封装到一个TCP报文段中进行发送。紧急指针会指出报文段数据载荷部分包含了多长的紧急数据,紧急数据之后是普通数据。
扩展首部(最大40字节)
选项(可变长度) 1.最大报文段长度MSS选项:TCP报文段数据载荷部分的最大长度。2.窗口扩大选项:为了扩大窗口(提高吞吐率)。3.时间戳选项:用来计算往返时间RTT;用来处理序号超范围的情况。4.选择确认选项。
填充 由于选项长度可变,因此使用填充来确保报文段首部能被4整除。(因为数据偏移字段,也就是首部长度字段,是以4字节为单位的)
应用层
应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。
-
客户/服务器(C/S)方式
C/S方式是因特网传统的、最成熟、最常见的方式。基于C/S方式的应用服务器通常是服务集中型的,即应用服务器集中在网络中比客户计算机少得多的服务器计算机上。
-
对等(P2P)方式
P2P方式中,没有固定的服务器请求者和服务提供者,分布在网络边缘个端系统中的应用进程是对等的,被称为对等方。对等方既是服务的请求者,又是服务的提供者。其最突出特性之一是可扩展性。
基于P2P的应用是服务分散型的,因为服务不是集中在少数几个服务器计算机中,而是分散在大量对等计算机中,这些计算机并部位服务提供商所有。
-
动态主机配置协议DHCP(Dynamic Host Configuration Protocol)
-
域名系统DNS(Domain Name System)
域名系统DNS是因特网使用的命名系统,用来便于人们记忆具有特定含义的主机名,转换为便于机器处理的IP地址
因特网采用层次树状结构的域名结构
···.三级域名.二级域名.顶级域名
域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。
域名服务器可以划分为四种不同的类型:根域名服务器、顶级域名服务器、权限域名服务器、本地域名服务器
域名解析的过程使用两种域名查询方式:递归查新、迭代查询
为了提高DNS的查询效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文的数量,在域名服务器和主机中广泛地使用了高速缓存。
DNS报文使用运输层的UDP协议进行封装,运输层端口号为53.
-
文件传送协议FTP(File Transfer Protocol)
FTP提供交互式访问,允许客户指明文件类型与格式,并允许文件具有存取权限;FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
FTP客户和服务器之间要建立两个并行的TCP连接:1.控制连接,在整个会话期间一直保持打开,用于传送FTP相关控制命令。2.数据连接,用于文件传输,在每次文件传输时才建立,传输结束就关闭。默认情况下,FTP使用TCP 21端口进行控制连接,TCP 20端口进行数据连接。
关于搭建windows系统本地FTP服务器,可见底部链接【2】。
-
电子邮件
电子邮件系统采用客户/服务器方式。三个主要组成构件:
- 用户代理:用户与电子邮件系统的接口,又称电子邮件客户端软件
- 邮件服务器:电子邮件系统的基础设施。因特网上所有的ISP都有邮件服务器,其功能是发送和接收邮件,同时负责维护用户的邮箱
- 协议:包括邮件发送协议(SMTP)和邮件读取协议(如POP3)
常用的邮件发送协议是简单邮件传输协议SMTP(Simple Mail Transfer Protocol):
- 基于TCP连接,端口号25;
- 只能传送ASCLL码文本;
- 用于用户代理向邮件服务器发送邮件及邮件服务器之间的邮件发送
- 为解决SMTP传送非ASCLL码文本问题,提出了多用途因特网邮件扩展MIME
常用的邮件读取协议:
-
邮局协议POP3(Post Office Protocol - Version 3):非常简单、功能有限的邮件读取协议。用户只能以下载并删除或下载并保留方式从邮件服务器下载邮件到用户方计算机。不允许用户在邮件服务器上管理自己的邮件。端口号110
-
因特网邮件访问协议IMAP(Internet Message Access Protocol):联机协议,用户在自己的计算机上就可以操控邮件服务器中的邮箱。端口号143
基于万维网的电子邮件:
- 与IMAP类似,由浏览器登陆邮件服务器万维网网站就可以对邮件进行管理。两者不同的是,IMAP需要在用户计算机安装专门的用户代理程序
- 该工作模式在用户浏览器与邮件服务器网站之间使用HTTP协议,而邮件服务器之间使用SMTP协议
参考链接
[1] 计算机网络微课堂
[2] 快速搭建一个本地的FTP服务器
>