目录
1 协议
1.1 协议的制定
1.2 协议分层与OSI参考模型
1.3 传输方式的分类
1.3.1 面向连接和面向无连接
1.3.2 电路交换与分组交换
1.3.3 根据接收端数量分类
1.4 地址
1.5 网络的构成要素
1.5.1 网卡
1.5.2 中继器
1.5.3 网桥/2层交换机
1.5.4 路由器/3层交换机
1.5.5 4~7层交换机
1.5.6 网关
1.6 现代网络实态
1.6.1 互联网通信
1.6.2 移动通信
1.6.3 数据中心
2 TCP/IP基础知识
2.1 TCP/IP的标准化
2.2 互联网基础知识
2.2.1 互联网的结构
2.2 TCP/IP协议分层模型
2.2.1 网络管理(SNMP)
2.3 TCP/IP分层模型与通信示例
2.3.1 数据包首部
3 数据链路层
3.1 数据链路相关技术
3.2.1 MAC地址
3.2.2 共享介质型网络
3.2.3 非共享介质网络
3.2.4 交换集线器——根据MAC地址转发
3.2.5 环路检测技术
3.2.6 VLAN
3.2.7 总结
3.3 以太网
3.3.1 以太网连接形式
3.3.2 以太网的历史
3.3.3 以太网帧格式
3.4 无线通信
3.4.1 无线通信的种类
3.4.2 蓝牙
3.4.3 WiMAX
3.4.4 ZigBee
3.5 PPP协议
3.6.1 LCP与NCP
3.6 其他数据链路
3.6.1 ATM
3.7 公共网络
4 IP协议
4.1 IP基础知识
4.1.1 IP地址
4.1.2 路由控制
4.1.3 数据链路的抽象化
4.1.4 IP是面向无连接
4.2 IP地址分类
4.2.1 广播地址
4.2.2 IP多播
4.2.3 子网掩码
4.2.4 全局地址与私有地址
4.2.5 全局地址由谁决定
4.3 路由控制
4.3.1 IP地址与路由控制
4.3.2 路由控制表的聚合
4.4 IP分割处理与再构成处理
4.4.1 数据链路不同,MTU则相异
4.4.2 IP报文的分片与重组
4.4.3 路由MTU发现
4.5 IPv4首部
4.6 IPv6首部格式
4.6.1 IPv6概述
5 IP协议相关技术
5.1 DNS
5.1.1 域名的构成
5.1.2 DNS如何查询
5.1.3 DNS如同互联网中的分布式数据库
5.2 ARP
5.2.1 ARP概要
5.2.2 ARP的工作机制
5.2.3 RARP(Reverse Address Resolution Protocol)
5.2.4 代理ARP
5.3 ICMP
5.3.1 主要的ICMP消息
5.3.2 ICMPv6
5.4 DHCP
5.4.1 DHCP的工作机制
5.4.2 DHCP中继代理
5.5 NAT
5.5.1 NAT的工作机制
5.5.2 NAT-PT(NAPT-PT)
5.5.3 NAT的潜在问题及解决方案
5.5.4 IP隧道
5.6 其他IP相关技术
5.6.1 IP多播相关技术
5.6.2 IP任播
5.6.3 通信质量控制
5.6.4 显式拥塞通知
5.6.5 Mobile IP
6 TCP和UDP
6.1 传输层的作用
6.1.1 传输层定义
6.1.2 通信处理
6.1.3 两种传输层协议TCP和UDP
6.2 端口号
6.2.1 通过IP地址、端口号、协议号进行通信识别
6.2.2 端口号如何确定
6.2.3 端口号与协议
6.3 UDP
6.4 TCP
6.4.1 序列号和确认应答
6.4.2 重发超时
6.4.3 连接管理
6.4.4 TCP以段为单位发送数据
6.4.5 利用窗口控制提高速度
6.4.6 窗口控制与重发控制
6.4.7 流控制
6.4.8 拥塞控制
6.4.9 提高网络利用率的规范
6.5 其他传输层协议
6.5.1 UDP-Lite
6.5.2 SCTP
6.5.3 DCCP
7 路由协议
7.1 路由控制的定义
7.1.1 静态路由与动态路由
7.2 路由控制范围
7.3 路由算法
7.4 RIP
7.4.1 广播路由控制信息
7.4.2 根据路由向量确定路由
7.4.3 使用子网掩码时的RIP处理
1、计算机与网络发展的7个阶段
(1)批处理系统
(2)分时系统——多个客户端连接同一个计算机,每个用户分时使用系统,当时间片较小时,给人的根据是一个人独占整个计算机系统。
(3)计算机之间的通信
早期,计算机之间数据的转移需要先将数据保存到磁带、软盘等外部存储介质中。再将介质送到目的计算机实现数据转储。
计算机之间由通信线路连接——客户端与计算机系统的通信,渐渐演变为计算机系统之间的通信。计算机之间的通信提高了计算机的可用性,并且人们开始逐渐使用多台计算机分布式处理问题,最终一并得到返回结果。
(4)计算机网络
分组交换技术的研发,以及不同计算机之间的通信技术的研究。80年代,一种能互连多种计算机的网络随之诞生。
(5)互联网的普及
互联网技术——连接异构型计算机的通信网络技术
面对互联趋势,各家厂商力图保证自家产品的互联性,着力于让自己的网络技术不断与互联网技术兼容。
(6)以互联网技术为中心的时代
IP网,其本身就是互联网技术的产物。通过IP网可以实现通信,互连建立互联网。
(7)从“单纯建立连接”到“安全建立连接”
TCP/IP是通信协议的统称。
TCP/IP技术是吸纳了异构网络之间的融合
IP,ICMP,TCP,UDP,TELNET,SNMP,SMTP等
IPX/SPX,用于LAN(局域网中)
协议:计算机与计算机之间通过网络实现通信时,事先达成的一种“约定”。只要厂商的设备遵循相同的的协议就能够实现通信。
计算机从物理层面到应用程序的软件层面,各个组件都必须严格遵循着事先达成的约定才能实现真正的通信。每个计算机还必须装有实现通信最基本功能的程序。
在设计计算机程序与硬件时,要充分考虑通信过程中可能会遇到的各种异常以及对异常的处理。
分组交换协议
ISO(国际标准化组织)制定了一个国际标准的OSI,对通信系统进行了标准化。
IETF(Internet Engineering Task Force),制定了TCP/TIP协议,TCP/IP协议慢慢成为业界标准,已成为世界广泛应用的通信协议。
上下层之间进行加护时所遵循的约定叫做“接口”,同一层之间的交互所遵循的约定叫做“协议”
协议分层就如同计算机软件中的模块化开发。分层可以将每个分层独立使用,并且分层使得复杂的网络协议简单化,更易于单独实现每个分层的协议,划分职责。
应用层
表示层——设备固有数据格式和网络标准数据格式的转换。或者软件特有的数据格式与网络标准数据格式之间的转化。表示层与表示层之间为了识别编码格式也会附加首部信息,从而将实际传输的数据转交给下一层去处理。
会话层——通信管理。负责建立和断开通信连接(何时建立连接,何时发送数据)。比如发送一次数据建立一次连接;建立一次连接发送多个文件;一次建立多个连接,同时发送文件。
传输层——管理两个节点之间的数据传输。在两个主机之间创建逻辑上的通信连接。
网络层——地址管理和路由选择。将数据从发送端主机发送到接收端主机。
数据链路层——互联设备之间传送和识别数据帧。在通过传输介质互连的设备之间进行数据处理。MAC地址的目的就是为了识别连接到同一个传输介质上的设备。负责发送一个分段内的数据。
物理层——以“0”、“1”代表电压的高低,灯光的闪灭
面向连接
面向无连接
1、电路交换
计算机之间在发送数据时,需要通过交换机与目标主机建立通信电路。——建立连接
建立好连接后,用户可以一直使用这条电路,直到该连接被断开为止。
问题——一台计算机在收发信息时会独占整个电路。当一天电路上连接多台计算机时,这些计算机之间需要相互传递数据,就会导致碰撞冲突等问题,导致无法通信。
2、分组交换
将数据分成多个数据包,按一定顺序排列后分别发送。
在分组交换中,由分组交换机(路由器)连接通信线路。——发送端计算机将数据分组发送给路由器,路由器收到分组数据以后,缓存到自己的缓冲区,然后再转发给目标计算机。
分组交换,通信设备共享通信线路。根据网络拥堵的情况,数据达到目标地址的时间有长有短。路由器的缓存饱和或溢出时,可能会导致分组数据丢失、无法发送到对端的情况。
根据目标地址的个数及其后续行为对通信进行分类。
1、单播
2、广播
3、组播——电视会议,将消息发给多个接收主机。
4、任播——从目标主机群中选一台最符合网络条件的主机。被选中的主机返回一个单播信号,随后发送端主机只会跟这台主机进行通信。DNS根域名解析服务器。
MAC地址,IP地址,端口——地址标识
IP地址的分层——网络号和主机号
路由表中记录的IP地址则是集中了之后的网络号和子网掩码。
网桥,工作在数据链路层,把多个局域网连接在一起组成一个更大的局域网。
网络接口卡NIC——集成了连接局域网功能的设备。有时被集成到计算机主板中,有时可以单独插入扩展槽使用。
以太网卡;无线网卡等。
工作在物理层——延长网络的设备。
把电缆穿过来的电信号或光信号经由中继器的波形调整和放大在传给另一个电缆。
网桥——工作在OSI模型的第2层,用于连接两个网络的设备。
能够识别数据链路层的数据帧,并将这些数据帧临时存储于内存,再重新生成信号,作为一个全新的帧转发给相连的另一个网段。
网桥可以通过地址自学机制和过滤功能控制网络流量——MAC地址、硬件地址、物理地址以及适配器地址。
以太网中使用的交换集线器也属于网桥一种。——但是集线器本身只是把所有的网线集中连在一起,把数据广播出去。比如多个计算机连接到集线器,计算机A要与B通信,则集线器把连接A机端口的数据广播出去。
路由器可以连接不同的数据链路;分担网络符合;还具备一定的网络安全功能——防火墙。
以TCP等协议的传输层及其上面的应用层为基础,分析收发数据,并对其进行特定处理
对于并发访问很大的Web站点,使用一台服务器不足以满足前端的访问需求,这时通常会假设多台服务器来分担。这些服务器前端访问的入口地址通常只有一个(统一的访问URL)。为了能通过同一个URL将前端访问分发到后台多个服务器上,可以在这些服务器的前端加一个负载均衡器。这种负载均衡器就是4~7层交换机的一种。
有时人们希望在网络比较拥堵的时候,优先处理像语音类这对及时性要求较高的通信请求,放缓处理像邮件或数据转发等稍有延迟也并无大碍的通信请求。这种处理称为带宽控制。这也是4~7层交换机的功能之一。
加速器,防火墙等——4~7层交换机。
是OSI模型中负责将传输层到应用层的数据进行转换和转发的设备。
对数据进行转发和转换——通常使用一个表示层或应用层网关,在两个不能进行直接通信的协议之间进行翻译,最终实现两者之间的通信。
互联网邮件与手机邮件之间的转换服务。
在使用WWW时,为了控制网络流量以及处于安全考虑,有时会使用代理服务器。这种代理服务器也是网关的一种,称为应用网关。
防火墙也是一种网关通信。
骨干网类似高速公路;边缘网络类似高速公路出口连接着国道、省道,从而可以通往市区街道。
骨干网(核心网)——注重传输性能和网络的生存型。通常会选用告诉路由器相互连接使之快速传输大量数据。
边缘网络(接入层/汇聚层)——将具有业务智能化的告诉路由器和交换机移到网络的边缘。
ISP提供互联网接入服务;联网后,汇集到无限局域网路由器和最近交换机的通信会再次被连接到前面所提到的“接入层”。设置可能通过“边缘网络”或“主干网”实现与目标地址之间的通信。
基站上设有特定手机基站天线,基地本身也相当于网络的“接入层”。
基站收集的通信请求被汇集到控制中心(“边缘网络”),之后会再被接入到互连通信控制中心的主干网。
1、LTE——长期演进技术
第3代和第3.5代移动通信网络的设计初衷,是用来传输最高64kbps的语言呼叫以及其他少量的数据通信。
LTE被视作从3G向4G演进的过渡型技术。LTE的标准中,声音也被当作IP数据包进行传输,所以就有必要在整个网络上应用TCP/IP协议,然而,现实中往往不可能一下子对网络中所有的硬件设备进行更换。对于这种情况,可采用CSFB的技术,这种技术让语音呼叫部分仅在手机通信网络中传输,使之保持与原来的语音呼叫处理一致。
2、公共无线局域网对手机终端的认证
(1)在家里或公司的无限局域网中,其线路连接部分往往是固定的,使用者通常仅限于特定的人群。
(2)对于公共无线局域网,由于运营商的不同,所以为了识别每一位使用者的合法性,就有必要对使用者进行验证,以检验他们是否为合法用户。在用户使用的终端设备真正被连接到“接入层”之前,需要确保只有获得认证的用户才能连接该公共无线局域网。在使用手机或智能手机等移动通信终端时,首先确认自己的手机要签约哪个移动运行商。从而让公共无线局域网的提供商从手机终端获取信息以识别是否为网内用户。
数据中心由大型服务器、存储以及计算机网络构成。有些大型的数据中心甚至直接连接“主干网”,即使是小规模的数据中心,也会连接到“边缘网络”。
1、虚拟化和云
背景:有些网站的访问量存在高峰期。网站对于网络资源的需求时刻都在发生变化。
(1)虚拟化技术:当一个网站需要调整运行所使用的资源时,并不增减服务器、存储设备、网络等实际的物理设备。而是利用软件将物理设备虚拟化,在有必要增减资源的时候,通过软件按量增减的一种机制。通过此机制按需分配、按比例分配,对外提供可靠的服务。
(2)云:利用虚拟化技术,根据使用者的情况动态调整必要资源的机制被人们称为“云”。
将虚拟化的系统根据需要自动地进行动态管理的部分被称为“智能协调层”。它能够将服务器、存储、网络看作一个整体进行管理。
星型网络容灾性差——分组交换技术——ARPANET对分组交换技术的实用性实验——TCP/IP诞生——UNIX对TCP/IP的支持——TCIP/IP迅速发展
TCP/IP——利用IP进行通信时所必须用到的协议群的统称。
1、开放性和实用性——先考虑可行性,再实验测试,再修改,直到完美。
开放性——IETF,允许任何人讨论
实用性——实现真正能够实现通信的技术:TCP/IP就是先发开程序,后写规格标准
2、RFC
那些需要标准化的协议,被人们列入RFC(Request For Comment)文档并在互联网上公布,RFC不仅记录了协议规范内容,还包含了协议的实现和运用的相关信息,以及实验方面的信息。
3、TCP/IP的标准化流程
互联网草案阶段;如果认为可以进行标准化,就记入RFC进入提议标准阶段;草案标准阶段;真正的标准阶段
4、RFC的获取方法
http://www.rfc-editor.org/rfc/
ftp://ftp.rfc-editor.org/in-notes/
互联网中的每个网络都是由骨干网(BackBone)和末端网(Stub)组成的。
每个网络之间通过NOC(Network Operation Center,网络操作中心)相连。
如果网络的运营商不同,它的网络连接方式和使用方法也会不同。连接这种异构的网络需要有IX(Internet Exchange,网络交换中心)的支持。
互联网就是众多异构的网络通过IX互连的一个巨型网络。
OSI注重——通信协议必要的功能是什么(概念性)
TCP/IP强调——在计算机上实现协议应该开发哪种程序(实用性)
SNMP,Simple Network Management Protocol,简单网络管理协议
使用SNMP管理的主机、网桥、路由器等称作SNMP代理(Agent),而进行管理的那一段叫做管理器(Manager)。
在SNMP的代理端,保存着网络接口的信息、通信数据量、异常数据量以及设备温度等信息。
这系列信息可以通过MIB(Management Information Base)访问——MIB是一种可透过网络的结构变量
SNMP属于应用程序协议,MIB属于表示层协议。
从应用层到物理媒介的数据处理流程
1、包、帧、数据报、段、消息
包:全能性术语
帧:数据链路层中的包的单位
数据包:IP和UDP等网络层以上的分层中包的单位
段:TCP数据流中的信息
消息:应用协议中数据的单位
数据链路层的协议定义了通过通信媒介互连的设备之间传输的规范。
在互连同一种数据链路的节点之间进行包传递。
数据链路层的技术包括:MAC寻址(物理寻址)、介质共享、非公有网络、分组交换、环路检测、VLAN 等。
以太网,WLAN,PPP(Point to Point Protocol)
以太网与FDDI(光纤分布式数据接口)
ATM,异步传输凡是
MAC地址用于识别数据链路中互连的节点。
MAC地址长48比特。使用网卡(NIC)是,MAC地址一般会烧入到ROM中。
1、共享介质型网络
多个设备共享一个通信介质的一种网络
设备之间使用同一个载波信道进行发送和接收
基本上采用半双工通信方式,并有必要对介质进行访问控制。
(1)争用访问控制方式
争夺获取数据传输的权力——CSMA(载波监听多路访问)
CSMA/CD——载波监听多路访问/碰撞检测(Collision Detection)
(2)令牌传递方式
沿着令牌环发送一种叫做“令牌”的特殊报文,是控制传输的一种方式。
只有获得令牌的站才能发送数据。——不会发生冲突;每个站获得令牌的机会平等。
对介质采取专用的一种传输控制方式
网络中的每个站点直连交换机,由交换机负责转发数据帧。
发送端与接收端并不共享通信介质,很多情况下采用全双工通信。
这种方式还可以根据交换机的高级特性构建虚拟局域网(VLAN)、进行流量控制等。
但是一旦交换机发生故障,与之相连的所有计算机之间都将无法通信。
ATM采用这种传输方式——异步传输
通过以太网交换机构建网络,从而使计算机与交换机端口之间形成一对一的连接,即可实现全双工通信。
这样在通信链路上,同一时间就只有交换机在发送数据
而且收发端口分离,增加数据缓冲区即可。
介质共享网络,同一时间只能有一台主机发送数据。当连网主机数量增加时,通信性能明显下降
交换集线器也叫做以太网交换机,持有多个端口的网桥。它们根据数据链路层每个帧的目标MAC地址,决定哪个网络接口发送数据。此时所参考、用以记录发送接口的表叫做转发表。
转发表的内容不需要使用者在每个终端或交换机上手工设置,而是可以自动生成。——将MAC地址与直连的端口对应。
交换机转发方式:
(1)存储转发
检查以太网数据帧末尾的FCS位后再进行转发。
(2)直通转发方式
得知目标地址即可开始转发。
网桥连接网络时,一旦出现环路该怎么办?——数据帧会在环路中被一而再再而三地持续转发。
有两种解决方法——生成树和源路
具有这些功能的网桥,即使构建了一个带有环路的网络,也不会造成那么严重的问题,只要搭建合适的环路,就能分散网络流量,在发生某一处路由故障时选择绕行,提高容灾能力。
1、生成树方式
每个网桥必须在每1~10秒内相互交换BPDU(Bridge Protocol Data Unit)包,从而判断哪些端口使用哪些不适用。——通过阻塞或开通端口来破环。
RSTP(Rapid Spanning Tree Protocol)快速生成树协议——发生故障切换网络时缩短恢复时间
2、源路由法
判断发送数据的源地址是通过哪个网桥实现传输的,并将帧写入RIF。——源地址与网桥本身绑定。
网桥则根据这个RIF信息发送帧给目标地址。
VLAN技术附加到网桥/2层交换机上,就可以切断所有VLAN之间的所有通信。相比一般的网桥/2层交换机,VLAN可以顾虑多余的包,提高网络的承载效率
VLAN——
该交换机按照其端口区分了多个网段,从而区分了广播数据传播的范围、减少了网络负载并提高了网络的安全性。然而异构的两个网段之间,就需要利用具有路由功能的交换机(如3层交换机),或在各段中间通过路由器的连接才能实现通信。
对于这种VLAN进行了扩展,又定义了IEEE802.1Q标准(也叫TAG VLAN),该标准允许包含跨越异构交换机的网段。
TAG VLAN中对每个网段都用一个VLAN ID的标签进行唯一标识。在交换机中传输帧时,在以太网首部加入这个VID标签,根据这个值决定将数据帧发送给哪个网段。
早期的的共享介质传输,所有的计算机连接到同一个传输介质,同一时间只能有一个用户发送数据
使用交换机以后,计算的数据都发送到交换机上,由交换机收发送数据,较少了碰撞的几率——因为实际在共享链路发送数据的终端减少了;而且使用收发分离的链路。
规范简单,易于NIC及驱动程序实现
早期采用多台终端使用同一根同轴电缆的共享介质型连接方式
现在一般采用终端与交换机之间独占电缆的方式实现以太网通信。
CSMA/CD称为以太网高速化的主要瓶颈
ATM交换技术(ATM中将固定长度的信元通过交换机快速传送)的进步和CAT5 UTP电缆的普及,以太网结构发生变化,逐渐采用像共享介质网络那样直接与交换机连接的方式。
没有交换机的半双工通信以及使用同轴电缆的总线型通信已经逐渐退出历史舞台。
以太网帧前端有一个叫做前导码的部分,它由0、1数字交替组合而成,表示一个以太网帧的开始,也是对端网卡能够确保与其同步的标志。
8个字节的前导码;以太网帧首部14字节——6字节源MAC,6字节目的MAC,2字节上层协议数据
一个数据帧所能容纳的最大数据范围是46~1500个字节。即IP数据包的最大长度为1500字节。
MAC地址最小为64字节——14 + 46 + 4
无线通信通常使用电磁波、红外线、激光等方式进行传播数据。
一般在办公室的局域网范围内组成的较高速的连接称为无线局域网。
IEEE802委员会制定了
无线PAN(Personal Area Network,802.15)——10米左右
无线LAN(Local Area Network,802.11)——100米左右。使用无线电波意味着在这个通信范围内,任何人都可以使用该无线LAN,有被盗听或篡改的危险。
无线MAN(Metropolitan Area Network,802.16)——数千米~100千米
无线RAN(Regional Area Network,802.22))——200~700千米
无线WAN(Wide Area Network)——手机通信,手机通过基站能够实现长距离通信。
蓝牙是使用3.4GHz频率无线电波的一种标准,数据传输的速率在V2中能达到3Mbps。
蓝颜是为较小的设备而设计的标准
WiMAX(Worldwide Interoperability for Microware Access)是使用微波在企业或家庭实现无线通信的一种方式。
主要应用于家电的远程控制,是一种短距离、低功耗的无线通信技术。
点对点通信
在进行数据传输前,要先建立一个PPP级的连接(存在物理连接)。连接建立以后就可以进行身份认证、压缩与加密
1、LCP(Link Control Protocol)协议:不依赖上层,主要负责建立和断开连接、设置最大接收单元(MRU, Maximum Receive Unit)、设置验证协议(PAP或CHAP)以及设置是否进行通信质量的监控。
2、NCP(Network Control Protocol):依赖上层,如果上层是IP,此时的NCP也叫做IPCP。IPCP负责IP地质设置以及是否进行TCP/TP首部压缩等设备。
ATM(Asynchronous Transfer Mode)是以一个叫做信元的单位进行传输的数据链路,由于其线路占用时间短和能够高效传输大量数据等特点主要用于广域网络的连接。
ATM是面向连接的一种数据链路。通信传输前要设置通信线路,通过事先向交换机发出一个信令要求,建立交换机与通话对端的连接。
ATM允许任何时候发送任何数据,当大量计算机同时发送大量数据时容易引发网络堵塞甚至使网络进入收敛状态——网络拥堵,来不及处理的包被丢弃。
1、同步与异步
(1)TDM——按照特定时间将每个帧分成若干个时隙,按照顺序发送给目标地址
T1给A用户;T2给B用户;T3给C用户;T4给D用户。尽管A用户没有数据,此时T1时刻,信道仍然被A用户占用。导致线路利用率比较低。
(2)ATM
ATM扩展了TDM,有效地提高了线路的利用率。
ATM在TDM的时隙放入数据是,并非按照线路的顺序而是按照数据到达的顺序放入。
按照这样顺序存放的数据在接收端并不易辨认真正的内容。为此,发送端还要附加一个5字节的包首部,包含VPI(Virtual Path Identifier)、VCI(Virtual Channel Identifier)等识别码用来标识具体的通信类型。
VPI和VCI的值只在直连通信的两个ATM交换机之间设置。
2、ATM与上层协议
ATM的一个信元只能发送规定的48字节数据。若这48个字节的数据部分中包含IP首部和TCP首部,则基本无法存放上层的数据。
所以一般不会单独使用ATM,而是使用上层的AAL(ATM Adapter Layer——ATM上的一层,IP下的一层)。
每个IP包被附加各层的协议首部后,最多可以被分成192个信元发送出去。但是一旦丢失一个信元,就需要中重新发送所有信元。
公共通信服务类似于电信运营商提供的电话网络。
人们通过与这些运营商签约、付费不仅可以实现联网还可以与距离遥远的机构组织进行通信。
1、模拟电话网络
计算机与电话线相连需要有一个将数字信号转为模拟信号的调制解调器——猫
2、移动通信服务
手机通信
3、ADSL
对已有的模拟电话线路进行扩展的一种服务。
通过分离器将低频的音频信号和高频的数字信号隔离。
4、FTTH
通过ONU(Optical Network Unit)装置将计算机与光纤关连。ONU负责光信号与电信号之间的转换。
OLT(Optical Line Terminal)光线路终端,用于连接光纤干线的终端设备
WDM——波分复用,光分离器,接入每家的光纤电缆通过ONU和OLT之间的光分离器相互隔离。
5、有线电视
6、VPN
(1)IP-VPN
ISP提供的IP-VPN服务
在IP网络上建立VPN
MPLS(Multiprotocol Label Switching)在IP包中附加一个叫做标签的信息进行传输控制。
每个用户的标签信息不同。
IPsec技术
对VPN通信的IP包进行验证和加密,在互联网上构造一个封闭的私有网络。
(2)广域以太网
在作为数据链路层的以太网上利用VLAN(虚拟局域网)实现VPN技术。
IP协议即网际协议。
跨域多种数据链路,就需要借助网络层。网络层可以跨越不同的数据链路。
数据链路是交通工具,路由告诉我们在哪里转车,在哪里下车。
IP寻址、路由、分包与组包
IP地址——IP地址用于在“连接到网络中所有主机中识别出进行通信的目标地址”
路由控制是指将分组发送到最终目的地址的功能
路由控制表——记录IP数据在下一步应该发给那个路由器。
IP对不同数据链路的相异特性进行抽象化
不同数据链路最大的区别就是,它们各自的最大传输单位(MTU)不同。
以太网的MTU是1500字节;FDDI的MTU是4352字节;ATM的MTU是9180字节。
IP的上一层可能会要求传送比这些MTU更多字节的数据,为了解决这个问题,IP进行分片处理。将较大的IP包分成多个较小的IP包。分片的包到了对端目标地址以后会再被组合起来传给上一层。
简化,提速
目前大部分采用子网掩码来区分“网络标识”和“主机标识”
IP地址分成四个级别——A、B、C、D
1、A类
以0开头,1~8位为网络标识
2、B类
以“10”开头,1~16位为网络标识
3、C类
以“110”开头,1~24位为网络标识
4、D类
以“1110”开头,1~32位为网络标识。用于多播。
1、本地广播
目标地址为本地网络主机号全为1的IP地址
2、直接广播
在不同网络之间的广播。目标地址为目标网络主机号全为1的IP地址。
多播用于将包发送给特定组内的所有主机。
1、IP多播与地址
多播使用D类地址。
如果首4位是“1110”,就可以认为是多播地址。
剩下的28位可以成为多播的组编号。
2、特殊多播地址
(1)224.0.0.0到224.0.0.255的范围不需要路由控制,在同一个链路也能实现多
(2)对于多播,所有主机必须属于224.0.0.1的组,所有路由器必须属于224.0.0.2的组
(3)利用IP多播实现通信,除了地址外还需要IGMP等协议的支持
引入子网以后,一个IP地址就有两种识别码——IP地址本身,子网掩码(标识网络)
CIDR和VLSM——无类型域间选路和可变长子网掩码
1、CIDR
采用任意长度分割IP地址的网络标识和主机标识
2、VLSM
CIDR被应用初期,网络内部采用固定长度的子网掩码机制。由于子网掩码长度被固定,域内所有的子网掩码都得使用同样的长度。但是固定长度无法满足多变的需求
VLSM,实现组织内使用可变长度的、高效的IP地址分配方式。它可以通过域间路由协议转换为RIP2以及OSPF实现。
没有连接互联网的独立网络中的主机,只要保证在这个网络内地址唯一,就可以不考虑互联网即可配置响应的IP地址。
NAT技术——互换私有IP与全局IP的技术,使得配有私有地址的主机与配有全局地址的互联网主机实现了通信。
世界范围内,全局IP由ICANN进行管理
随着ISP的出现,人们在向ISP申请接入互联网的同时往往还会申请全局IP地址。
对于FTTH和ADSL的服务,网络提供商直接给用户分配全局IP地址,并且用户每次重连该IP地址都可能发生变化。这是的IP地址由提供商维护,不需要用户亲自申请全局IP地址。
现在普遍采用一种方式是——在LAN中设置私有地址,通过少数设置全局IP地址的代理服务器结合NAT的设置进行互联网通信。
发送数据包的时候所使用的地址是IP地址仅仅有IP地址还不足以实现将数据包发送到对端的目标地址。
在数据发送过程中还需要类似于“指明路由器或主机”的信息,以便真正发往目标地址。
路由控制表的形式有两种:管理员手动设置——静态路由控制;路由器与其他路由器相互交换信息时自动刷新——动态路由控制。
IP地址的网络地址部分用于进行路由控制。
路由控制表中记录着网络地址与下一步应该发送至路由器的地址。——路由表中记录着:网络地址 + 下一跳路由器地址
如果控制表中存在多条相同网络地址的记录,则采用最长匹配原则。
1、默认路由
默认路由是指路由表中任何一个地址都能与之匹配的记录。
默认路由一般标记为0.0.0.0/0或default。这里的0.0.0.0/0并不是指IP0.0.0.0,由于后面是“/0”,所以并没有标识IP地址。
2、主机路由
“IP地址/32”也被称为主机路由。
它的意思是整个IP地址的所有位都将参与路由。
进行主机路由,意味着要基于主机上网卡上配置的IP地址本身,而不是基于该地址的网络地址部分进行路由。
主机路由多被用于不希望通过网络地址路由的情况——使用主机路由会导致路由表膨大,路由负荷增加,进而造成网络性能下降
3、环回地址
环回地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。
与该地址具有相同意义的是一个叫做localhost的主机名。
使用这个IP数据包不会流向网络。
利用网络地址的比特分布可以有效地进行分层配置。
对内即使有多个子网掩码,对外呈现出的也是同一个网络地址。——通过路由信息的聚合可以有效地减少路由表的条目。
不同数据链路使用的目的不同,可承载的MTU不同。
IP抽象了底层的数据链路,不受限于不同数据链路的MTU。——IP的最大MTU为65535字节。
分片机制使得路由器的处理负荷加重,且一旦某个分片丢失,则整个IP数据报作废。
路径MTU发现技术
1、路径MTU
从发送端主机到接收端主机之间不需要分片时最大的MTU的大小。即路径中存在的所有数据链路中最小的MTU。
发送主机按照路径MTU的大小将数据报分片后进行发送。
路径MTU发现可以避免在中途的路由器进行分片处理。
2、路径MTU发现的工作原理
(1)首先发送端主机发送IP数据报时将其首部的分片禁止标志位设置为1
途中路由器收到该包,如果需要分片也不会进行分片,而是将包丢弃。随后,通过一个ICMP的不可达消息将数据链路上的MTU的值发送给主机。
(2)主机将接收到的MTU设置为当前MTU再发送数据,直到没有再收到任何ICMP,就认为最后一个ICMP所通知的MTU即是一个合适的MTU值。
(3)当MTU值较多时,可以缓存约10分钟。10分钟后再重新求MTU值。
3、UDP和TCP
对于UDP,路径发现MTU在IP层进行分片。——当ICMP通知下一次MTU时,UDP中没有重发处理,应用在发送下一个消息时会被分片。
对于TCP,路径发现MTU在TCP层进行分片,不需要再在IP层进行分片,直接传给TCP层进行处理。——当ICMP通知下一次MTU是,根据TCP的重发处理,数据报会被重新发送。TCP负责分片后传给IP层。
1、版本
2、首部长度——单位4字节
3、区分服务
对该字段划分为DSCP和ECN
DSCP:差分服务代码点,用来进行质量控制。
ECN:显式拥塞通告,用来报告网络拥堵情况。
4、总长度——16比特,首部+数据部分总字节数
5、标识——16比特,用于分片重组。同一分片的标识值相同。
6、标志——3比特。
0:未使用,必须为0
1:指示是否进行分片。0,可以分片;1,不可以分片
2:允许分片时,表示是否为最后一个包。0,最后一个分片包;1,分片段中的包
7、片偏——13比特,每个分段相对于原始数据的位置。第一个分片对应的值为0。
8、生存时间——TTL,8比特。
9、协议——8比特,表示IP首部的下一个首部隶属于哪个协议。
10、首部校验和——16比特,用于校验首部
11、可选项
12、填充——如果不是32比特的整数倍,则向该字段田中0,调整为32比特的整数倍。
1、版本——4比特
2、通信量类——8比特,相当于IPv4中的区分服务Type of Service
3、流标号——20比特,准备用于Qos控制。
在进行服务流量控制时,将流标号设置为一个随机数,然后利用一种可以设置流的协议RSVP(Resource Reservation Protocol)在路由器上进行Qos设置。
当某个包在发送途中需要Qos时,需要附加上RSVP预想的流标号。路由器接收到这样的IP包后先将流标号作为检查关键字,迅速从服务质量控制信息中查找并做相应处理。
4、有效载荷长度——包的数据部分。
5、下一个首部——8比特,相当于IPv4的协议字段。通常表示IP的上一层协议是TCP或UDP。
6、跳数限制——8比特。与IPv4的TTL相同。
7、源地址——128比特
8、目的地址
IPv6是为了解决IPv4地址耗尽问题。
将IPv4切换到IPv6及其耗时,需要将网络中所有主机和路由器的IP地址进行重新设置。
1、IPv6的特点
(1)IP地址的扩大与控制表的聚合
(2)性能提升——包首部长度采固定的值(40字节),不再采用首部检验码。
(3)支持即插即用功能。——即使没有DHCP服务器也可以实现自动分配IP地址。
(4)采用认证与加密功能——应对伪造IP地址和网络安全功能以及防止线路窃听的功能(IPSec)。
(5)多播、Mobile IP成为扩展功能。
2、IPv6中IP地址的标记方法
128比特以每16比特为一组,每组用冒号(“:”)隔开进行标记。而且如果出现连续的0时还可以将这些0省略,并用两个冒号(“::”)隔开。但是一个IP地址中只允许出现一次两个连续的冒号。
3、IPv6地址结构
通过IP地址的前几位标识IP地址的种类。
(1)在互联网通信中,使用一种全局的单播地址。它是互联网中唯一的一个地址,不需要正式分配IP地址。
(2)限制性网络(私有网络),可以使用唯一本地地址。该地址根据一定的算法生成随机数并融合到地址中,可以向IPv4的私有地址一样自由使用。
(3)在不死用路由器或在同一个以太网网段内进行通信时,可以使用链路本地单播地址。
(4)在构建允许多种类型IP地址的网络时,在同一个链路上也可以使用全局单播地址以及唯一本地地址进行通信。
(5)在IPv6的环境中,可以同时将这些IP地址全都配置到同1个NIC上,按需灵活使用。
单凭IP是无法实现通信的
应用提供的是应用可以识别的地址——Web网站地址,电子邮箱地址等,所以为了主机根据实际的IP包进行通信,需要将应用中使用的地址映射为IP地址
在数据链路层也不使用IP地址,在以外网情况下只使用MAC地址传输数据包。所以必须直到收发端的MAC地址
DNS、ARP、ICMP、ICMPv6、DHCP、NAT等
IP隧道、IP多播、IP任播、质量控制(Qos)以及网络拥塞的显式通知和Mobile IP技术
ARPANET时,互联网信息中心整体管理一份hosts文件,该文件记录了主机标识码和IP地址之间的对应关系。每当新增一台计算机接入到ARPANET时,就要更新这个hosts文件,而其他计算机需要定期下载hosts文件,才能使用网络,非常不方便。
DNS,管理主机名和IP地址之间对应关系的系统。
在这个系统中,主机的管理机构可以对数据进行变更和设定。——维它维护一个表示组织内部主机名和IP地址之间对应关系的数据库。可以对这个数据库进行更改,无需向其他机构进行申报。
域名一种为了识别主机名称和组织机构名称的一种具有分层的名称
1、域名服务器
域名服务器是管理域名的主机和相应的软件,它可以管理所在分层的域的相关信息。每层都设有一个域名服务器。
2、根域名服务器
根域名服务器中注册着根以下第一层域名服务器的IP地址。
类似,根域名服务的下一层域名服务器中注册了再往下一层域名服务器的IP地址。
为了提高域名服务器的容灾能力,一般会设置至少两个以上的域名服务器。
所有的域名服务器都必须注册根域名服务器的IP地址。
3、解析器
进行DNS查询的主机和软件叫做DNS解析器——用户所使用的工作站或个人电脑都属于解析器
一个解析器至少注册一个以上域名服务器的IP地址
解析器为了查询IP地址,向域名服务器进行查询处理。如果自己的数据库中有该域名对应的IP地址则返回
没有,则域名服务器再向上一层根域名服务器进行查询处理。从根开始进行遍历,直到找到指定的域名服务器。并由这个域名服务器返回想要的数据。
DNS服务器不仅记录了主机名与IP地址之间的映射关系,它还管理众多信息
数据链路层的通信需要了解每个IP地址对应的MAC地址
以目标IP地址为线索。
用来定位下一个应该接受数据分包的网络设备对应的MAC地址。
如果目标主机不在同一链路时,可以通过ARP查找下一跳路由器的MAC地址。
只适用于IPv4
ARP是借助ARP请求与ARP响应两种类型的包确定MAC地址的
主机A为了获得主机B的MAC地址,通过广播包发送一个ARP请求包,包中包含B的IP地址。B收到广播包,进行解析,发现ARP请求包中的目标IP地址与自己的IP地址一致,B就将自己的MAC地址塞入ARP响应包返回给主机A。
获取了MAC地址后,建立一个ARP缓存表——MAC地址与IP地址的映射表。并且每隔一段时间就清理并更新这个ARP缓存表。
从MAC地址定位IP地址的一种协议——将打印机服务器器等小型嵌入式设备接入网络时经常用到
对于嵌入式设备,会遇到没有任何输入接口(无法手动设置IP地址)或无法通过DHCP动态获取IP地址的情况。
架设一台RARP服务器,在这个服务器上注册设备的MAC地址及其IP地址。
插电时,设备会发送一条“我的MAC地址是***,请告诉我,我的IP地址应该是什么”的请求信息。
RARP服务器接到这个消息后返回类似于“MAC地址为***的设备,IP地址为***”的消息给这个设备。设备根据应答消息设置自己的IP地址。
通常ARP包会被路由器隔离
采用代理ARP的路由器可以将ARP请求转发给邻近的网段。
对于那些不支持设定子网掩码的老设备来说,使用代理ARP就可以更好地使用网络——在各个网段上定义各自的子网。
ICMP的主要功能包括——确认IP包是否成功送达目标地址,通知在发送过程中IP包被废弃的具体原因,改善网络设置等。
ICMP的消息大致可以分为两类——通知出错原因的错误消息;用于诊断的查询消息。
1、ICMP目标不可达(类型3)
IP路由器无法将IP数据包发送给目标地址时,会给发送端主机返回一个目标不可达的ICMP消息,并在这个消息中显示不可达的具体原因。
2、ICMP重定向消息(类型5)
如果路由器发现发送端主机使用了次优的路径发送数据,那么它会返回一个ICMP重定向的消息给这个主机。这个消息中包含了最合适的路由信息和源数据。
3、ICMP超时消息(类型11)
当TTL的值减到0时,该IP包会被丢弃,此时IP路由器将会发送一个ICMP超时的消息给发送端主机,并通知该包已被丢弃
4、ICMP回送消息(类型0、8)
用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息。
可以向对端主机发送回送请求的消息,也可以接收对端主机发回来的回送应答消息。
5、ICMP原点抑制消息(类型4)
为了缓和网络拥塞情况。
当路由器的发送队列满了时,可以向IP包的源地址发送一个ICMP原点抑制消息。
6、ICMP路由器探索消息(类型9、10)
主要用于发现与自己相连网络中的路由器。
当一台主机发出ICMP路由请求(类型10)时,路由器则返回ICMP路由器公告消息(类型9)给主机。
7、ICMP地址掩码消息(类型17、18)
主要用于主机或路由器想要了解子网掩码的情况。
可以向目标主机或路由器发送ICMP地址掩码请求消息(类型17),然后通过接受ICMP地址掩码应答消息(类型18)获取子网掩码的信息。
IPv6中,ICMP的作用被扩大,如果没有ICMPv6,IPv6就无法进行正常通信。
ICMPv6的邻居探索消息融合了IPv4的ARP、ICMP重定向以及ICMP路由器选择消息等功能于一体,设置还提供自动设置IP地址的功能。
ICMPv6大致分为两类:错误消息;信息消息。——类型0~127属于错误消息;128~255属于信息消息。
邻居探索
ICMPv6中从类型133至137的消息叫做邻居探索消息。
邻居请求消息用于查询IPv6地址与MAC地址对应关系,并由邻居宣告消息得知MAC地址。
邻居请求消息利用IPv6的多播地址实现传输。
IPv6中实现了即插即用的功能,在没有DHCP服务器的环境下也能实现IP地址自动获取。
如果是一个没有路由器的网络,就使用MAC地址作为链路本地单播地址。在一个有路由器的网络环境中,可以以路由器获得IPv6地址的前面部分,后面部分则由MAC地址进行设置。
对于移动设备,为了实现自动设置IP地址、统一管理IP地址分配,产生了DHCP协议
架设一台DHCP服务器,然后将DHCP所要分配的IP地址设置到服务器上。还需要将相应的子网掩码、路由控制信息以及DNS服务器的地址等设置到服务器上。
DHCP发现包——此时设备IPD地址还未确定,发现包的目标地址为广播地址——255.255.255.255,源地址为——0.0.0.0,表示未知。发现包用于发现DHCP服务器。
DHCP请求包——用于请求IP地址
检查IP地址是否可用
一般为了容灾,会假设两台或两台以上DHCP服务器。但是启动多个DHCP服务器时,可能会导致几处分配的IP地址相互冲突。为了检查所要分配的IP地址以及已经分配的IP地址是否可用,DHCP服务器或DHCP客户端必须具备以下功能:
1、DHCP服务端
在分配IP地址前发送ICMP回送请求包,确认没有返回应答
2、DHCP客户端
针对从DHCP那里获得的IP地址发送ARP请求包,确认没有返回应答。
为什么不都用ICMP回送请求包,或者ARP请求包???——是不是ICMP请求包需要知道源IP地址,而ARP请求包只需要知道目的IP地址。
每个以太网段都需要一个DHCP服务器,但是当以太网段增多时,为每个网段配置DHCP服务时困难的,且不易于统一管理。
在每个网段设置一个DHCP中继代理,它可以设置DHCP服务器的IP地址,从而可以在DHCP服务器上为每个网段注册IP地址的分配范围。
DHCP客户端会向DHCP中继代理发送DHCP请求包,而DHCP中继代理在收到这个广播包以后再以单播的形式发给DHCP服务器。服务器端收到该包以后再向DHCP中继代理返回应答,并由DHCP中继代理将此包转发给DHCP客户端。由此,DHCP服务器即使不在同一个链路上也可以实现统一分配和管理IP地址。
NAT是用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术。
还有可以转换TCP、UDP端口号的NAPT(Network Address Ports Translator)技术,由此可实现用一个全局IP地址与多个主机的通信。
已知目标地址,发送数据包
到达NAT路由器时,将源地址转换为全局IP地址,转发数据,并设置私有IP和目的IP的映射表
当有从目标IP应答的数据包到达NAT路由器时(此时目的IP为NAT的全局IP),根据映射表,知道数据包应该转发给谁。
但是,当私有网络多台机器同时都要与外部通信时,仅仅转换IP会出现问题——映射表中存在多个私有IP对公有IP的映射,此时如果接收到公有IP的数据包,应该把数据包转给谁呢??
NAPT——使用包含端口号一起的转换方式解决
私有源地址和公有目标地址都包含了IP地址和端口号
NAT-PT:将IPv6首部转换为IPv4的首部的一种技术。这使得只有IPv6地址的主机也能够与IPv4地址的其他主机进行通信了。
1、NAT的限制
(1)无法从NAT外部向内部服务器建立连接
(2)转换表的生成和转换操作产生一定的开销
(3)通信过程一旦NAT遇到异常需要重新启动时,所有TCP连接都将被重置
(4)即使备至两台NAT做容灾备份,TCP连接还是会被断开。
解决方案
(1)NAT用于解决IPv4枯竭问题,使用IPv6就避免了IP地址枯竭问题
(2)NAT穿越——先由内侧发送一个标识给外侧,外侧根据这个标识来通信。
所谓的隧道即使给数据安装一种标识,而这种标识支持在这个数据链路中传输
多播通信中,确认接收端是否存在非常重要。
如果没有接收端、发送多播消息将会造成网络流浪的浪费。
确认是否有接收端你,要通过MLD(Multicast Listener Discovery,多播监听发现)实现——IPv4中IGMP和IPv6中ICMPv6的重要功能
ICMP(MLD)主要有两大作用
(1)向路由器表明想要接收多播消息(并通知想要接收多播的地址)
路由器会根据第1个作用,了解到想要接收多播的主机,并将这个信息告知其他的路由器,准备接收多播消息。
多播消息的发送路径则由PIM-SM、PIM-DM、DVMRP、DOSPF等多播路由协议决定。
(2)向交换集线器通知想要接收多播的地址
ICMP(MLD)探听。通常交换集线器只会习得单播地址。而多播帧和广播帧不经过过滤就会拷贝到端口上,这会导致网络负荷加重。
而支持ICMP(MLD)探听的交换集线器可以过滤多播帧,交换机从ICMP(MLD)包中获知多播发送的地址和端口,从而不会向毫无关系的端口发送多播帧。
IP任播主要用于报警电话110与消防电话19系统。——其接收电话并不是只有一个,而是可以拨打到一个区域管辖范围内的所有公安或消防部门。
IP任播是指为那些提供同一种服务的服务器配置同一个IP地址,并与最近的服务器进行通信的一种方法。它可适用于IPv4和IPv6。
但是对于TCP连接,无法保证把包都发送给同一个主机
DNS根域名服务器
DNS分域名服务器,对IP地址的分类限制为13中类型。但是从负载均衡和灾备应对的角度来看,全世界根域名服务器不可能只设置13处。使用IP任播可以让更多的DNS根域名服务器散布到世界各个角落。
控制通信质量类似于高速上的VIP通道。
通信质量包括带宽、延迟、时延波动等内容。路由器在内部的队列中可以优先处理这些要求保证通信质量的包,有时甚至不得不丢弃哪些没有优先级的包以保证通信质量。
为了控制通信质量,人们提出了RSVP技术,它包括两个内容,一是提供点对点的详细优先控制,另一个是提供相对粗粒度的优先控制。
当发生网络拥塞时,发送主机应该减少数据包的发送量。
TCP的拥塞控制是tongue数据包的实际损坏情况来判断是否发生拥塞,这种方法在数据包损坏之前并不能减少数据包的发送量。
ECN——在IP层新增的一种显式拥塞通知的机制
当移动设备所连接的子网发生变化,则无法通过TCP继续通信
Mobile IP在主机所连接的子网IP发生变化(比如Mobile移动到另一个子网)时,主机IP地址仍保持不变。应用不需要做任何改动。即使是IP地址发生变化的环境下,通信也能继续。
IP隧道与Mobile IP
(1)移动主机——移动了位置,IP地址却不变的设备。没移动时的网络叫做归属网络,IP地址叫做归属地址。移动后的地址叫做移动地址。
(2)归属代理
处于归属网络下,可监控移动设备的位置,并转发数据包给移动主机
(3)外部代理
所有需要接入设备的移动主都需要它。
使用于支持移动主机的移动设备。
TCP和UDP是两个具有代表性的传输层协议。
TCP提供可靠的通信传输,UDP通常被用于让广播和细节控制交给应用的通信传输。
IP层有一个协议字段,用来标识网络层的上一层所采用的是哪一种传输层协议
TCP/UDP通过端口号来识别在传输层上一层的应用层中所需要进行处理的具体程序。
TCP/IP的众多应用协议大多以客户端/服务端的形式运行
这些服务端程序在UNIX系统中叫做守护进程。UNIX中并不需要将所有守护进程逐个启动,而是启动一个可以代表他们接收客户端请求的inetd(互联网守护进程)服务程序即可。它是一个超级守护进程。该超级守护进程收到客户端请求以后会创建(fork)新的进程并转换(exec)为各个守护进程。
确认一个请求究竟发给的是哪个服务端(守护进程),可以通过所收到数据包的目标端口号轻松识别。
TCP
TCP是面向连接的、可靠的流协议。
UDP
不具有可靠的数据报协议。细微的处理交给上层应用去完成
UDP主要用于那些对高速传输和实时性有较高要求的通信或广播通信。
MAC地址用来标识同一链路中不同计算机
IP地址用来标识TCP/IP网络中互连的主机和路由器
端口号用来标识同一台计算机中进行通信的不同应用程序
仅凭目标端口号识别某一通信是远远不够的。
协议号——表示IP上层是什么传输协议
TCP/IP或UDP/IP通信中通常采用5个信息来识别也通信——“源IP地址”、“目标IP地址”、“协议号”、“源端口号”、“目标端口号”
1、标准既定的端口号
静态方法。
知名端口号——0~1023
注册端口号——1024~49151
http://www.iana.org/assignments/port-numbers
2、时序分配
动态分配
此时服务器端有必要确定监听端口号,但是客户端没有必要确定端口号。——客户端应用程序可以让操作系统进行分配端口号。
操作系统可以为每个应用程序分配互不冲突的端口号。
动态端口号——49152~65535
端口号由使用的传输层协议决定。不同的传输协议可以使用相同的端口号
TCP端口号
UDP端口号
UDP——User Datagram Protocol
将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。
UDP的大小,在应用层已经划分好了——应该是根据路径MTU,即所经过的不同的网段的MTU的最小值。
UDP适用于
(1)包总量较少的通信(DNS、SNMP等)
(2)视频、音频等多媒体通信(即时通信)
(3)限定于LAN等特定网路中的应用通信
(4)广播通信(广播、多播)
包长度:16位,单位1字节(5位)。UDP首部的长度跟数据的长度之和。
校验和:为了提供可靠的UDP首部和数据而设计。
将IP地址作为伪首部,进行校验和计算。——应用通信的5大要素:“源IP”、目标IP、源端口、目标端口、协议号。UDP中只有源端口和目标端口,如果3项信息被破坏则会导致应用收不到包,所以引入伪首部。
TCP实现了数据传输时各种控制功能,可以进行丢包时重发控制,还可以对次序乱掉的分包进行顺序控制。
TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠传输。
拥塞窗口(发送端)——由网络当前拥塞情况确定
滑动窗口(接收端)——由接收端的当前缓冲区空闲空间决定。
1、序列号
发送数据的位置。每发送一次数据就累加一次数据字节数的大小。建立连接时由计算机生成的随机数作为初始值,通过SYN包传给接收端主机。然后再将每转发过去的字节数累加到初始值上表示数据的位置。
2、确认应答号
下一次应该收到的数据的序列号。发送端收到确认应答以后可以认为这个序号以前的数据都已经被正常接收。
3、数据偏移
4位,单位4字节。TCP所传输的数据部分应该从TCP包的哪个位开始计算。
也可以看做TCP首部的长度。
4、保留
4位。扩展用。
5、控制位
8位。
CWR(Congestion Window Reduced):与ECE标志都用于IP首部的ECN字段。ECE标志为1时,则通知对方已将拥塞窗口缩小。
ECE(ECN-Echo):置为1会通知对方,从对方到这边的网络有拥塞。在收到IP首部中的ECN为1的数据包时,将TCP首部的ECE设置为1。
URG:为1时,表示包中需要紧急处理的数据。
ACK:为1时,确认应答的字段变为有效。除了最初建立连接时的SYN包之外,该位必须设置为1。
PSH(Push Flag):为1,表示需要将收到的数据立刻传给上层应用。PSH为0,则不需要立即传而是先缓存。
RST:为1,表示TCP连接中出现异常,必须强制断开连接。
SYN:用于建立连接。SYN为1表示希望建立连接,并在序列号的字段进行序列号初始值的设定。
FIN:该位为1,表示今后不会再有数据发送,希望断开连接。
6、窗口大小
字段为16位。
7、校验和
8、紧急指针
16位,在URG为1时有效。
数值表示本报文段中紧急数据的指针。从数据部分的首部到紧急指针所指示的位置为紧急数据。
9、选项
长度最大为40字节。尽量为4字节的整数。
确认应答(ACK)——当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知。
当发送端将数据发出之后等待对端的确认应答。如果有确认应答,说明数据已经成功到达对端。在一定时间内没有得到确认应答,发送端就可以认为数据已经丢失,并进行重发。
确认应答在途中丢失也会导致无法收到应答。此时发送端已经重发消息。那么接收端收到相同的数据,此时为了可到的传输,必须放弃重复的数据包。
序列号,可以标识数据包。序列号是按顺序给发送数据的每一个字节都标上号码的编号。接收端查询接收数据TCP首部中的序列号和数据长度,将自己下一步应该接收的序号作为确认应答返送回去。
重发超时是指在重发数据之前,等待确认应答到来的那个特定时间间隔。
为了制定合适的重发超时——不同的网络环境传输时间不同
发送端每次发包时,都会计算往返时间及其偏差。
数据重发后收不到确认应答,等待应答的确认时间会以2倍、4倍的指数函数延长。
TCP提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好通信两端之间的准备工作。
1、建立连接
数据通信前,通过TCP首部发送一个SYN包作为创建连接的请求,等待确认应答;
收到应答,则认为可以进行数据通信。否则不进行数据通信。
通信结束时会进行断开连接的处理(FIN包)
建立TCP连接的同时,也可以确定发送数据包的单位,称为“最大消息长度”MSS(Maximum Segment Size)。最理想的情况是最大消息长度正好是IP中不会被分片处理的最大数据长度。——也就是说MSS也可能会被IP层分片
TCP在传送数据时是以MSS的大小将数据进行分割发送的。
MSS是在第三次握手的时候,会在TCP首部写入MSS选项,告诉对象自己的接口能够适应的MSS的大小。然后在二者之间选择一个较小的值使用。
每发一个段进行一次确认应答——这种同步通信方式性能差,且往返时间越长通信性能越差
窗口机制
发送端在发送一个段以后不必要一直等待确认应答,而是继续发送。
窗口大小就是指无需等待确认应答而可以继续发送数据的最大值。——这种机制实现了使用大量的缓冲区(临时保存收发数据),通过对过个段同时进行应答的功能。
在这个窗口内的数据即便没有收到确认应答也可以发送出去。发送端主机在等到确认应答返回之前,必须在缓冲区中保留这部分数据。
在滑动传功库以外的部分包括尚未发送的数据以及已经确认对端已收到的数据。当数据发出后若如期收到应答就可以不同再进行重发,此时数据就可以从缓冲区清除。
窗口控制中,段丢失怎么办?
如果接收主机收到一个自己应该接收的序号以外的数据时,就会针对当前为止收到的数据返回确认应答。——即使接收端主机收到的包序号并不连续,也不会丢弃而是暂时保存在缓冲区。
当某一报文段丢失后,发送端会一直收到序号为1001的确认应答,发送端主机如果连续3次收到同一个确认应答,就会将其所对应的数据进行重发。
当发送速率和接收速率不匹配,接收端可能会丢弃来不及处理的数据,从而触发了重发机制,从而导致网络流量浪费。
TCP提供一种机制可以让发送端根据接收端的实际接收能力控制发送的数据量——流量控制。
接收端主机向发送端主机通知自己可以接收数据的大小——窗口大小。
TCP首部中,专门有一个字段用来通知窗口大小,接收主机将自己可以接收的缓冲区大小放入这个字段中通知给发送端。这个值越大,说明网络的吞吐量越高。当接收端的缓冲区面临数据溢出时,窗口大小的值也随之被设置为一个更小的值通知给发送端,从而控制数据发送量。
如果窗口更新通知在传送中丢失,可能会导致无法继续通信。为了避免此类问题的发生,发送端主机会时不时发送一窗口探测数据段——此数据段仅包含一个字节以获取最新的窗口打下消息。
当非同步发送数据时——即不是发送一个数据段都等待确认,如果通信刚开始就连续发送大量数据包,此时网络若处于拥塞状态,则会导致问题。所以,通信一开始时会通过一个叫做慢启动的算法得出的数值,对发送数据量进行控制。
拥塞窗口——在慢启动时,发送端将拥塞窗口的大小设置为1个数据段发送数据,之后每收到一次确认应答(ACK),拥塞窗口的值就加1。将拥塞窗口的大小与接收主机通知的窗口大小做比较,取较小的值。
如果重发采用超时机制——非快速重发,则慢启动阈值的大小会被设置为当时窗口大小的一半,然后将窗口的大小设置为该慢启动阈值+3个数据段的大小。
Nagle算法
当发送端还有应该发送的数据,但是数据很少,进行延迟发送的一种机制——满足其中一个条件时发送:收到所有已发送数据的ACK;可以发送最大段长度(MSS)数据时
延迟确认应答
接收端如果每次都立刻恢复确认应答的话,可能会返回一个较小的窗口——因为刚接收完数据此时缓冲区将满
绝大多数是每两个数据段返回一次确认应答——所以这个是针对接收端来说的
捎带应答
在同一个TCP包中既发送数据又发送确认应答的一种机制——一般与延迟确认应答一起使用,因为延迟才有多余的确认应答。
UDP-Lite(Lightweight User Datagram Protocol,轻量级用户数据报协议)是扩展UDP机能的一种传输层协议。
UDP-Lite提供与UDP几乎相同的功能,但是计算校验和的范围可以由应用自行决定。可以只针对不允许发送错误的部分进行校验和的检查,对于其他部分即使发生错误,也会被忽略不计。避免了因校验和错误就丢弃UDP包。
SCTP(Stream Control Transmission Protocol,流控制传输协议)
特点:
(1)以消息为单位收发
(2)支持多重宿主
(3)支持多数据流通信
(4)可以定义消息的生存期限
SCTP主要用于进行通信的引用之间发送众多较小的消息的情况。这些较小的应用消息被称作数据块(Chunk),多个数据块组成一个数据包。
DCCP(Datagram Congestion Control Protocol,数据报拥塞控制协议),是一个辅助UDP的崭新的传输层协议。
互联网是由路由器连接的网络组合而成。
路由器根据路由控制表转发数据包。它根据所收到的数据包中目标主机的IP与路由控制表的比较得出下一个应该接收的路由器。
路由控制分静态和动态两种类型
静态路由是指事先设置好路由器和主机并将路由信息固定的一种方法。
动态路由是指让路由协议在运行过程中自动设置路由控制信息的一种方法。——路由器为了能够定期相互交换必要的路由控制消息,会与相邻的路由器之间互发消息。
动态路由的链路信息会接力一样一次传递给其他路由器。
根据路由控制的范围常使用IGP(Interior Gateway Protocol)和EGP(Exterior Gateway Protocol)两种类型的路由协议。
自治系统与路由协议
企业内部指定自己的路由策略,并以此为准在一个或多个网络群体中采用的小型单位叫做自治系统(AS)或路由选择域。
EGP在区域网络之间(或ISP之间)进行路由选择——BGP
IGP在区域网络内部(或ISP内部)进行主机识别——RIP、RIP2、OSPF
距离向量算法和链路状态算法
距离向量算法
根据距离(代价——相当于要进过的路由器的个数)和方向决定目标网络或目标主机位置。
缺点:路由收敛(互换路由信息,获得稳定路由信息)耗时长;易发生路由循环等问题。
链路状态算法
路由器在了解网络整体连接状态的基础上生成路由控制表的一种方法。
链路状态算法中所有路由器持有相同的信息。
主要路由协议
RIP(Routing Information Portocol)是距离向量型的一种路由协议,广泛用于LAN。
RIP将路由控制信息定期(30秒一次)向全网广播。如果没有收到路由控制信息,连接就会被断开。——有可能是丢包导致的,因此RIP规定等待5次,第6次仍然未收到路由信息,才会真正关闭连接。
RIP基于巨量向量算法决定路径。距离(Metrics)的单位是“跳数”。跳数是指所经过的路由器的个数。
RIP希望尽可能少通过路由器将数据包转发到目标IP地址。根据距离向量生成距离向量表,再抽出较小的路由生成最终的路由控制表。
RIP可以用于使用子网掩码的网络环境。