1.通信协议:TCP/IP传输控制协议(通信标准)
2.TCP/IP协议栈分四层:应用层、传输层、Internet层、网络访问层
OSI参考模型分七层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
3.数据封装过程:a.用户调用应用程序通过TCP/IP访问相应服务->b.应用层转换用户信息为数据流给传输层处理->c.传输层提供端到端的通信(即应用程序之间的通信),传输层协议负责系统管理信息的流动提供可靠或不可靠的传输服务。发送方将数据流分组成数据段,并加上传输层报文头标识(TCP报文头或UDP报文头),接收方拨掉传输层报文头,利用报文头中的校验和来检验数据在传输中是否出错,重新组装数据段为数据流交给应用程序处理 -> d.网络Internet层处理主机间的通信,决定如何交付数据包(是交给路由器网关还是本地端口) ;发送方将传输层提供的数据段封装到数据包中,填入IP报头(源IP地址、目标IP地址、什么协议、校验和等等);接收方通过该层通过读取IP头中信息决定如何处理数据包(路由器收到则检验其有效性决定做本地处理还是转发该数据包,目标主机检验通过后会去掉IP包头交给传输层处理)-> e.网络访问层将Internet层的数据包封装成帧(帧头包含源MAC地址、目标MAC地址、何种链路封装协议HDLC、PPP等信息),再将帧通过选定网络接口发送出去,接收方读取帧头信息(发给自己则拆开帧头奖数据包交给Internet层处理,否则丢弃该帧)。-> f.最后硬件(网络设备)把帧转换成比特流通过传输介质将信息发送出去。
4.TCP/IP协议栈的应用层包括的协议:
文件传输类:HTTP(超文本传输协议)、FTP(文件传输协议)、TFTP(简单文件传输协议)
远程登录类:Telnet
电子邮件类:SMTP(简单邮件传输协议)
网络管理类:SNMP(简单网络管理协议)
域名解析类:DNS(域名服务)
【注意】FTP可以设置为匿名访问,系统默认以"anonymous/guest(某email地址)"作为用户名和密码。匿名访问用于发布大量公用领域或共享软件。TFTP基于UDP应用的小文件传输,速度快,内存和处理器要求低,但不具备FTP许多功能,只能从服务器上获取文件或写入文件,不能列出目录进行认证,没有建立连接的过程和错误恢复能力。TFTP应用:使用TFTP服务器来备份或恢复Cisco路由器、CataLyst交换机的IOS镜像额配置文件。DNS——把域名转换成网络可识别IP地址。使用nslookup进行域名解析。
5.TCP/IP传输层协议:传输控制协议(TCP)和用户数据包协议(UDP)
TCP是可靠面向连接的通信协议(如打电话)。UDP是不可靠或无连接分组交付的通信协议(如发名片)。
传输层使用端口号来标识不同应用程序和服务程序,跟踪网络间同时发生的不同会话,然后把他们发送给Internet层处理。同时TCP和UDP接收来自Internet层送来的数据包,用端口号区分它们,然后送给适当的应用程序处理。这是多路复用技术的体现。主机发送应用程序的数据之前,都必须确认端口号,两种情况:(1)使用中央管理机构(RFC1700)统一分配端口号,不能随便使用已定义的端口号。(2)使用动态随机绑定端口号。TCP/IP设计者采用一种混合方式实现端口地址管理。
端口号分配情况:
a.端口号(<255) 用于公共应用
b.端口号(255~1023)是特定供应商应用程序的注册端口号
c.端口号(>1023)未作规定。
6.常用应用层协议或应用程序的端口号:
FTP:21、20 Telnet:23 SMTP:25 TFTP:69 SNMP:161 DNS:53 HTTP:80
7.端口使用实例:主机A telnet 到主机B。主机A首先向TCP请求一个可用端口,TCP随机分配端口号
为1088的端口给它,主机A将目标端口号置为23,A和B通信后,B看到A过来的端口号是23,知道是一个telnet应用,它会为它创建一个telnet会话。如有多个telnet用户,当A上第二个telnet用户向TCP发出请求时,TCP会选出另一个可使用的端口号如1099,给第二个telnet用户,主机B上会创建第二个telnet会话。
8.UDP头:源端口、目标端口号、报文头长度(8位组UDP数据包)、校验和(头标和数据域计算的校验和,在高可靠性网络上尽量减少开销)、数据(上层协议数据)
UDP提供一种高效可靠的网络上传输数据而不用消耗不必要的网络资源和处理时间的通信方式。使用UDP协议包括TFTP、SNMP、NFS、DNS、DHCP。很适合这种客户机向服务器发送简单服务请求的环境,因为开销比TCP小,TCP要经历三次握手过程。UDP依靠上层协议提供可靠性,包括处理报文的丢失、重复、时延、乱序、连接失效等问题。
9.TCP头:源端口(16)、目标端口(16)、序列号(32 确保数据到达序列正确的编号)、应答号(32 期望的下一个TCP数据段)、头长度(4 以32位字为单位的报头长度)、保留(6 置为0)、编码位(6 开始终止会话之类的控制功能)、窗口(16 用来控制流量)、校验和(16 头标和数据域计算的校验和)、紧急(16 指示紧急数据的末端)、可选项(如果有0或32 TCP段的最大值)、数据(可变 上层协议的数据)
TCP提供服务:面向连接的虚电路(三次握手建立连接)、面向流(字节流进行分段)、流量控制避免拥塞(一次传输足够多的数据)、多路复用技术(端口号实现)、全双工连接(一条连接上同时传输两个独立流向相反的数据流)
10.建立TCP连接:三次握手
在面向连接环境中,两个终端之间先建立一个连接,彼此准备好传送和接收数据。通信双方必须用彼此的初始化序列号seq和来自对方成功传输确认的应答号ack来同步。(同步信号SYN,应答信号ACK)
关闭TCP连接:改进的三次握手(对于一个已经建立的连接,使用改进的三次握手来结束通话)
FIN标识完成finish信号。
【超时与重发PAR机制】如果在传输过程中丢失了某个序列号的数据段,导致发送端在给定时间间隔内得不到那个数据段的应答,则那个丢失的数据段就会被要求重发。数据段保存于发送端的缓冲区中,直到发送端接收到应答号,并释放该缓冲区。
【注意】如果网络拥塞,发送端重发数据包后网络又恢复正常,那么接收端会收到两个同样序列号的数据段,此时接收端会自动丢弃第二个保留第一个。序列号和应答号为TCP提供了一种纠错机制提高了TCP的可靠性。
11.窗口技术:TCP改善流量控制技术,使通信双方能充分利用带宽。
滑动窗口允许发送方在收到接收方的确认信息之前发送多个数据段。窗口大小决定了在收到目的确认前一次可传送数据段的最大数目,越大则传输数据段越多。当主机传输视窗大小数目的数据段后,就必须等待收到确认,才可以再传下面的数据段。如窗口大小为3,那么发送方可以一次传输3个数据段,然后等待对方确认一次后,再传输下面三个数据段,依次类推。
通信双方可以通过协商动态修改窗口大小。在TCP每个确认信息中,除指出了下一个数据段的序列号外,还包括一个窗口通告,该通告指出接收方还能再收多少数据段(相当于接收缓冲区大小)。如果通告值增大,窗口增大;通告值减小,窗口减小。当网络拥塞导致数据包丢失,窗口大小自动减半,以保证数据传输。
12.TCP连接总结:TCP连接分三个阶段——三次握手、数据传输(大数据量)、结束通话。
如果数据传输过程传输小数据量,则使用UDP作为其传输协议。如DNS这样的轻权通信。
13.Internet层:提供寻址和路由选择协议,对应osi参考模型网络层。该层主要运行如下几个协议:
a.网际协议IP:对数据包进行无连接最佳路由选择,不关心内容只关心路径传递数据包。
b.网际控制报文协议ICMP:提供控制和传递消息功能。
c.地址解析协议ARP:已知IP地址确定数据链路层MAC地址。
d.反向地址解析协议RARP:已知数据链路层MAC地址确定IP地址。
e.动态主机配置协议DHCP:将IP地址和一些TCP/IP配置分配给网络中的计算机的一项服务和协议。
14.链路层:TCP/IP协议栈中最底层协议。
(1)以太网封装技术:
尾部封装:调整IP数据报中变长的字段(IP首部和TCP首部)移动到CRC之前的数据报尾部来提高性能,把数据帧中的数据部分映射到一个内核的硬件页面,节省内存到内存的复制过程。目前该尾部封装技术已遭到反对。
(2)SLIP:串行线路IP。适用于家庭中每台计算机几乎都有的RS-232串口和高速调制解调器接入Internet.
IP数据报以一个称作END的特殊字符开始和结束;如果IP报文中某个字符为END(0xc0),那么就要连续传输两个字节0xdb(ESC字符)和0xdc来取代它;如果IP报文中某个字符为SLIP的ESC(0xdb),那么就要连续传输两个字节Oxdb和0xdd来取代它。如图:SLIP报文的封装在原IP数据报上增加了4个字节长度。
SLIP帧封装缺陷:a.每端必须知道对方IP地址。 b.数据帧没有类型字段,不能同时使用其他协议。 c.没有在数据帧中加上校验和(CRC),只能在上层协议中纠错。
虽然有些许缺陷,SLIP协议仍被广泛使用。
(3)压缩SLIP——CSLIP:将20个字节的IP首部和20个字节的TCP首部总数超过40个字节压缩到3或5个字节,在每一端维持多达16个TCP连接。这些被压缩的首部大大缩短了交互响应的时间(因为串行线路速率较低,通信是交互式的,在SLIP线路上有许多小的TCP分组交换)。
(4)PPP:点对点协议——修正SLIP所有缺陷
在串行链路上封装IP数据报、建立配置和测试数据链路的链路控制协议(LCP)、针对不同网络层协议的网络控制协议(NCP)类似于CSLP。相较于SLIP,PPP只增加了3个额外字节——1个字节留给协议字段,另2个字节留给CRC字段使用。使用网络控制协议NCP,可以压缩报文首部,减小IP和TCP首部长度。
(5)环回接口:如localhost(127.0.0.1),一个传给环回接口的IP数据报均作为IP输入,且不能在任何网络上出现。注意:4BSD系统定义了变量useloopback,并初始化为1,但是如果这个变量为0,以太网驱动程序就会把本地分组送到网络,而不是送到环回接口。
(6)数据包大小:数据包封装在物理帧中传输定义了上限值(最大传输单元MTU);如令牌环网数据包MTU=4500字节,以太网数据包MTU=1500字节、FDDI数据包MTU=4770字节。如果数据包大小超过互联网最大网络MTU,无法封装到帧中去;反之太小则会浪费带宽。
【如何选择数据包MTU】(1)选择接近相连网络的MTU值为初始数据包大小。数据包大小是以8的倍数的字节数来表示数据包的段位移(2)机制:在MTU较小网络上,把大数据包划分成更小的数据包(分片),不一定要分成相同大小的分片,首先选择最接近网络MTU的8倍数的字节数为数据包大小,最后一片是前面分下来的零头。
【应用MTU】使用netstat命令打印出网络接口的MTU。使用traceroute命令来确定到达目的节点的路径MTU。
15.TCP最大报文长度(MSS):选择合适报文长度很困难。报文太小会降低网络带宽利用率;报文太大也会降低网络性能。当数据包在数据分片后在传输过程中丢失,那么整个数据包就要被重传,如果数据包分片太多,势必会影响网络性能。TCP报文段理论最佳长度要求:尽可能携带更多数据,而且IP数据包在传输过程中尽量不被分片。
16.ICMP:控制消息协议——定义了一套差错报文和控制报文,用于主机和路由器之间交换不可达目的地址、网络拥塞、重定向到更好的路径、报文生命周期超时等信息。
ICMP封装在IP数据包内部:IP首部(20字节)+ICMP数据包
ICMP报文两大类:查询报文(ICMP响应请求响应回答路由器公告地址屏蔽等请求等)、错误报文(绝大部分消息,目的地址不可达、源地址消亡、生命周期超时等)。
ICMP应用:ping命令查看某ip的主机是否在线或不可到达。
17.ICMP不可达类型:
a.网络不可到达:
如果路由器没有到达某网段的路由,那么路由器A就会使用代码号为“0”的“网络不可达”的代码向客户机返回一个ICMP消息,以响应客户机的目的地的包数据包。
b.主机不可到达:
路由器A有到达某网段的路由,它会将数据包传给路由器B,路由器再负责将数据包传给该网段的服务器。但此时WEB服务器突然Down机了,那么路由器B接收不到来自Web服务器的信息,那么路由器B会使用代码号为“1”的“主机不可到达”的代码向客户机返回一个ICMP消息。
c.禁止分割:
如果路由器A在讲客户机的数据发往服务器时需要分割客户机的数据包,但数据包的IP头中却设置了拒绝分片位,那么路由器会向客户机返回一个代码为4的“禁止分割”的ICMP消息。
【注意】以上3种都是由路由器发送的ICMP消息。
e.协议不可到达:如数据包成功地到达了WEB服务器,但是服务器上不运行TCP或者UDP协议(基本不可能有这种情况),那么web服务器将返回一个代码为2的“协议不可到达”的ICMP消息。
f.端口不可到达:如数据包成功到达了WEB服务器(主机),服务器上也运行TCP协议,但服务器上相关软件还没运行,无法处理客户机连接,那么服务器上的TCP/IP将返回一个代码为3的“端口不可到达”的ICMP消息。
【注意】以上2种消息都是有具体主机发送的。
18.ICMP超时:
数据包在传输期间每次经过路由器IP头中的TTL字段的值会减1,当TTL值减为0时,在回路中产生的数据循环包就会被自动丢弃。此时丢弃这个包的路由器会返回一个代码为“传输期间TTL值为0”的ICMP消息给原始发送者。TTL值可以防止数据包在网络上循环往复的传输。
【应用】traceroute命令查看IP数据包从一台主机传递到另一台主机中所经过的路由(Cisco路由器命令)、windows使用tracert命令。
【疑问】traceroute命令如何判断数据包是否已经到达目标主机?
只需要区分所接收到得ICMP报文是“超时”还是“端口不可达”,如果是“端口不可达”那么数据包已经到达目标主机,否则数据包还在传递过程中。
19.ICMP重定向:当主机向非本地子网发送数据包时,TCP/IP会自动将数据包转发给它的默认网关。但如果网络中存在一个相对更好的本地路由器(即处于同一本地子网中)时,ICMP会重定向通知主机以后将这些数据包发送给这个更好的路由器。
20.ARP协议实现:在以太网中,ARP缓冲保存了一定数量的从IP地址到MAC地址的映射,同时当一个ARP广播到来时,ARP协议软件会把其中的物理地址与IP地址的映射记录下来保存在ARP缓冲中,这些映射表项并非永久有效。如果目标地址不包含在该缓冲表中,主机会发送一个arp请求(广播形式),网段上的主机都可以接收到该广播,但只有目标主机才会响应此ARP请求,它采用一个单播消息来回应请求。
【注意】ARP数据包不能跨网段(路由器)使用,当目标网络IP地址和源IP地址不在同一网段上时,就要使用代理ARP。
【应用】(1)在PC上使用ARP命令:
arp -a或arp -g:查看高速缓存中的所有项目。
arp -a IP: 只显示与该接口相关的ARP缓存项目。
arp -s IP MAC: 可以向ARP高速缓存中人工输入一个静态项目。该项目在计算机出现错误时或引导过程中将保持有效状态,人工培植的物理地址将自动更新该项目。
arp -d IP:人工删除一个静态项目。
(2)在Cisco路由器上使用ARP命令:
show ip arp:查看路由器当前的ARP表。
arp ip-address hardware-address type [alias]
21.反向ARP协议:RARP——ARP的逆过程。
当主机A以广播形式发出RARP请求,网段上的所有主机都会接受到该请求。如果某个网段上存在多个被授权的RARP服务器时,这些RARP服务器都会以单播方式响应RARP请求,不过当源主机接收到一个RARP应答时,它只接受第一个到达的RARP应答。
【注意】ARP和RARP都是在数据链路层上实现的。动态主机配置协议(DHCP)是现代RARP的实现。
22.DHCP:动态配置IP地址租给这个客户端一段时间,在租用期间,客户端每次登陆时都会向服务器发出IP地址的续订请求。如果租用期到了,但客户端没有续订,那么这个ip地址就会退回到DHCP服务器的地址池中等待重新分配。管理员也可以静态配置将IP地址固定地分配给某个主机,该ip地址唯一分配给这个主机客户。DHCP还可以帮客户端指定网关、子网掩码、DNS服务器,WINS服务器等项目。
【应用】windows系统中,本地连接属性-Internet属性(TCP/IP)-常规 使用 DHCP服务。
将Cisco路由器配置为DHCP服务器命令:
在Cisco路由器的DHCP服务器上定义静态的DHCP映射条目,用于固定服务器或固定主机配置。我们必须为每条静态映射单独定义一个地址池,然后在新地址池中定义IP地址和MAC地址。
检验DHCP服务器的配置命令:
show run: 显示DHCP服务器的配置
show ip dhcp server statistics: 查看DHCP服务器的当前状态和消息收发情况
23.IP地址:网络地址+主机地址。(如街道和门牌号的关系)
IP地址分类:A、B、C类地址被用来作为全球唯一的单播地址,D、E类地址作为组播或试验目的保留。
24.子网掩码:网络设备区分网络地址和主机地址,是个过滤码,将IP地址和子网掩码“按位求与”就可以过滤出IP地址中应该作为网络地址的那一部分。1&1=1,0&1=0,0&0=0 (有0则0,全1为1)
A类地址的子网掩码:255.0.0.0
B类地址的子网掩码:255.255.0.0
C类地址的子网掩码:255.255.255.0
通常情况下,在IP地址后面加上“/n”标识一个具体的ip地址。(n表示子网掩码中“1”的个数,如子网掩码255.255.255.0,通常写成“/24”)
【注意】127.*.*.*已被保留用作回路测试,网络0.0.0.0也保留用于广播地址(未知网络),所以不能分配给任何网络。全0主机地址表示网络,全1主机地址表示这个网络的定向广播,所以主机数比可能的主机数少2.
主机地址运算方法:2的N次-2(N是主机部分的位数),如A类为24,2的24次-2=16777214个主机
A类地址:为巨型网络所设计。网络范围:1~126.网络数:128-2,主机数:16777214.
B类地址:支持中到大型网络。网络范围:128~191.网络数:16384-2,主机数:65536.
C类地址:支持大量的小型网络。网络范围:192~223.网络数:2097152-2,主机数:256.
D类地址:用于IP网络中的组播(多点广播),同时把一个数据流发送到多个接收端。网络范围:224~239.拥有268435456个组(2的28次方),任何主机都可以自由加入或离开任何组。
E类地址:虽被定义但保留作研究之用。网络范围:240~255.
25.路由器功能:
a.交换和转发—— 将数据从路由器的进入接口穿过路由器再发送到外出接口
b.路由(寻址)——通过路由选择表决定正确转发路径。
数据帧格式:
26.分用(Dumultiplexing):当目的主机收到一个以太网数据帧时,数据就开始从协议栈由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。
(1)重复型服务器模型:a.等待一个客户请求到来 b.处理客户请求(不能为其他客户机提供服务) c.发送响应给发送请求的客户 d.返回a.
(2)并发型服务器模型:a.等待一个客户请求到来 b.启动一个新服务器来处理这个客户的请求,生成的该新服务器对客户的全部请求进行处理,结束后终止该新服务器 c.返回a.
一般来说TCP服务器是并发的,而UDP服务器是重复的,但也存在例外。