TCP/IP学习笔记
文章目录
1. TCP/IP概述
互联网的目的就是要隐藏底层网络的硬件细节,同时提供一般的服务通信。
网际互连的方式
应用级互联
实质:
应用程序完全了解本机器网络连接的内部细节,并直接通过网络连接与其它应用程序通信。应用程序直接建立在物理网络上,无任何中间协议。
缺陷:
- 每台计算机上都要有所需的应用程序
- 硬件变动后,应用程序要做出相应的修改
- 每个应用程序都要了解本机的所有网络连接,造成代码重复
网络级互联
思想:把通信部分独立出来
方法:在低层网络技术与高层应用程序之间增加一个中间层软件,以便抽象和屏蔽硬件细节,向用户提供通用网络服务。
优势:
- 把数据通信活动从应用程序中分离出来,允许中间的计算机直接处理网络通信,而不必了解发送双方 的应用程序
- 系统更加灵活,因此可以建立通用的通信工具
- 如果出现新的网络技术,只要修改或者增加新的网络层软件而不需要修改上层应用程序
TCP/IP 的引入
问题? 数据格式不同,地址不同如何进行通讯。
解决办法:引入IP层,屏蔽不同物理网络技术的差别;引入IP路由器
有了IP层和路由器之后又有了三个问题:选路,控制和可靠性。
- 解决办法:路由协议:(RIP、OSPF、BGP等)
- ICMP:Internet控制报文协议
- TCP/UDP:传输层协议(传输控制协议和用户数据报协议)
在上述协议的基础上,实现了多种网络应用:FTP、HTTP、TELNET、POP3、SMTP、SNMP、DNS等等
TCP/IP协议族:上述各个协议的统称。
TCP/IP是网间互连的一个重要协议,是一个被广泛采用的互连协议标准。
TCP/IP是一个协议族,TCP和IP是其中两个最重要的且必不可少的协议,故用它们作为代表命名。
TCP/IP 的分层模型
分层的优势:简化问题,分而治之,有利于软件升级换代。
分层的缺点:效率低
- 各层之间相互独立,都要对数据进行处理
- 每层处理完毕都要加一个头结构,增加了通信数据量
TCP/IP 的分层原则:信宿机第n层收到的数据与信源机第n层发出的数据完全一致 。
协议分层的两个边界:操作系统边界、协议地址边界。
IP位于所有通信的中心,是唯一被所有应用程序所共有的协议。
总结: TCP/IP模型是在一个硬件层上构建的4个软件层
- 应用层:提供通讯用的应用程序,如电子邮件,文件传输。
- 传输层:提供应用程序间端到端的通信。(格式化信息流、提供可靠传输、识别不同 的应用程序)
- IP层:负责点到点通信。(处理TCP分层发送请求、为进入的数据报寻径、处理ICMP报文:控流和拥塞控制、组播服务)。
- 网络接口层:接收IP数据并通过选定的网络发送。
TCP/IP Internet的发展历史
- 1958年1月,ARPA (Advanced Research Projects Agency)成立。旨在研究对国防有重大意义的高新技术。其中研究的重要任务之一是:在战争期间保证不间断、高可靠性通信的通信网络系统。
- 1969年10月,ARPA建立了第一个分组交换网络ARPANET。
- 1973年,ARPA启动互联网研究项目(Internetting),并导致了TCP/IP的出现与发展。
- 1977-1979,推出目前形式的TCP/IP体系结构和协议规范(基本定型)。
- 1980年前后,ARPA上的所有机器开始转向TCP/IP,并以ARPANET为主干逐步建立Internet。
- 1983年初,向TCP/IP的转换全部结束。
- 1975年起ARPANET的网控与管理者将ARPANET一分为二:
ARPANET:用于进一步的研究。
MILNET:用于军方的非机密通信。 - 1983年,伯克利加州大学推出内含TCP/IP的第一个BSD UNIX (Berkeley Software Distribution UNIX)。此举使ARPANET覆盖了当时美国90%的计算机科学系。
- 1984年,Internet基本形成。
- 1985年,NSF (National Scientific Foundation)开始资助TCP/IP和互联网的研究。
- 1986年,建立NSFNET,使全美的主要院校、科研机构联入NSFNET,并与ARPANET相联。
- 此后,NSF不断发展并逐步取代ARPANET成为Internet的新主干,ARPANET逐渐退出历史舞台。
- 1991年起,美国政府决定把主干网交给私人公司。
- 1993年,高级网络和服务公司ANS (AdvancedNetworks and Services)建立了ANSNET,并准备取代NSFNET。
- 1995年,NSF不再对NSFNET提供资助,各种商业网络代替NSFNET提供主干通信服务,Internet进入商业化时代。
- 1995年,VBNS (Very High Speed Backbone Network Service)建设并取代ANSNET。
- 1996年,美国启动NGI (Next Generation Internet),并从1998年开始研究建设NGI的主干网Abilene。
- 目前的TCP/IP是第4版,称作IPv4。
- 1998年,IPv6协议标准于基本制定完成,进入实用化阶段。
1995年10月24日,美国联邦网络委员会为Internet作了如下定义:
Internet是一个全球性的信息系统,系统中的每台主机都有一个全球唯一的主机地址,地址格式通过IP协议定义。系统中主机与主机间的通信遵守TCP/IP协议标准,或是其它与IP兼容的协议标准来交换信息。在以上描述的信息基础设施上,利用公网或专网的形式,向社会大众提供资源和服务。
TCP/IP形成的主要原因:
1.TCP/IP是最早出现的互联网协议,它的成功得益于顺应了社会的需求。
-
DARPA采用开放策略推广TCP/IP,鼓励厂商、大学开发TCP/IP产品 。
-
TCP/IP与流行的UNIX系统结合是其成功的主要源泉。
-
TCP/IP技术来自于实践,并在实践中不断改进。
Standford大学的Vint Cerf因在TCP/IP上作出的突出贡献,而被人们称为“Internet之父”。
2. 点到点协议PPP
PPP简介
PPP (Point to Point Protocol)属于网络接口层,主要用于拨号接入Internet的场合。
早在1974年7月,IETF就以RFC1661的形式推出了PPP标准。
至今仍然被广泛应用,并随着新型宽带技术的推出而衍生出新的形式,如符合ADSL接入要求的PPPoE。
PPP协议的对等段是客户和ISP,它们通过Modem和电话网络连接。
PPP协议流程:
- 在建立PPP链路前,发起方必须通过电话网络呼叫回应方。呼叫成功后双方建立了一条物理连接。
- 利用LCP创建PPP链路。
- 用PAP或CHAP验证客户身份。
- 用IPCP配置IP层参数(主要是配置IP地址)。
- 通信完成后,双方利用LCP断开PPP链路。
- 之后,断开物理连接。
上述流程中各个报文段的含义如下:
- 发起方发送LCP配置请求报文,其中包括各项配置参数,比如
使用的认证协议、最大接收单元和压缩协议等 - 回应方若同意各项配置参数,则返回确认报文
- 发起方提供账号和口令,以便验证自己的身份
- 回应方验证发起方的身份成功后,向其返回确认报文
- 发起方发出IPCP配置请求
- 回应方返回确认,其中包含了分配给发起方的IP地址
- 发起方发回LCP终止链路请求
- 回应方返回确认,链路终
PPP链路操作的5个阶段:
- Dead:初态和终态,表明物理层尚未准备好;
- Establish:使用LCP建立和配置链路;
- Authentication:身份认证阶段;
- Network:使用相应的NCP配置网络层议;
- Terminate:终止链路。
PPP协议满足条件和组成
PPP:
- PPP是使用串行线路通信的面向字节协议
- PPP可以在同步和异步线路上使用
- 由于流量控制、差错控制已在TCP中实现,因此PPP 没有纠错功能,不进行流量控制,不需要帧序号,不支持多点链路,使用全双工方式传输数。
PPP协议应满足的条件:
- 简单:不需要复杂的流量控制、差错控制等功能,也不需要序号,只需要实现最基本的功能。
- 封装成帧:规定特殊的字符作为帧的开始和结束标志,同时保证能正确地区分数据与帧的定界标志,保证数据的透明传输。
- 支持多种网络层协议:能支持多种网络层协议。
- 支持多种类型链路:能在多种链路上运行,如同步或异步、高速或低速、电或光等链路。
- 差错检测:可进行差错检测,丢弃错帧。
- 检测连接状态:能及时自动检测链路工作状态。
- 可设置最大传送单元:可针对不同的链路设置最大传送单元MTU的值(帧中数据部分的长度)。
- 支持网络层地址协商:支持网络层通过协商配置并识别网络地址。
- 支持数据压缩协商:提供协商使用数据压缩算法的方法。
PPP协议的组成:
- 帧格式及成帧方法(HDLC封装)
- 用于建立、配置和测试PPP链路的LCP(Link Control Protocol ,链路控制协议)
- 用于建立和配置网络层协议的NCP(Network Control Protocol,网络控制协议)。对于IP网络而言,使用IPCP(IP控制协议)。
此外,当客户拨入ISP时,ISP需要验证客户身份,此时可以使用2个认证协议,即PAP和CHAP。
相关协议
DHLC:
DHCL是一种成帧方法。
- 定义了将IP数据报封装到串行链路的方法,明确的界定一个帧的结束和下一个帧的开始,其帧格式允许进行错误检测。
- PPP既支持异步链路,也支持面向位串的同步链路。
- IP数据报是PPP中信息部分,其长度受最大传送单元MTU的限制。MTU的默认值是1500字节。
LCP:
LCP是一个链路控制协议
- 链路控制协议负责线路建立、配置、测试和选项协商,并在它们不再需要时,稳定地把他们释放。
NCP:
NCP是一套网络控制协议
- 网络控制协议可以支持不同地网络层协议,如IP、Appletalk等,对于所支持的每一个网络层协议都有一个不同的 网络控制协议,用来建立和配置不同的网络层协议。提供了协商网络层选项的方式。
PPP协议的帧格式
- 标志域:标志为0x7E,即“01111110”,与HDLC相同。
- 地址域:固定为0xFF,即“11111111”,表示所有站都可以接收这个帧。因为PPP只用于点对点链路,地址域实际上不起作用。
- 控制域:
- 置为0x03,即“00000011”,表示PPP帧不使用编号。PPP帧有三种类型:信息帧、监督帧、无编号帧
- 缺省值:PPP不提供使用序列号和确认应答的可靠传输。
- 在有噪音的环境中,如无线网络中,通过LCP确定可以使用编号方式的可靠传输。
- 协议域:说明信息域中承载分组的种类。PPP为LCP、NCP、AppleTalk和其他协议定义了相应的代码。缺省长度是2字节,通过LCP协商变成1个字节。常用的有:
- 0x0021:IP数据报。
- 0x002b:IPX数据。
- 0x0029:AppleTalk数据。
- 0xc021:PPP链路控制数据(LCP)。
- 0x8021:IP控制协议(IPCP)。
- 0x802b:IPX控制协议。
- 0x8029:AppleTalk控制协议。
- 信息域:信息域是网络层传送过来分组,长度可变,可以协商一个最大值(MTU)。缺省1500字节。
- 字节填充法:当PPP使用异步传输时(面向字符),使用字节填充法来(0x7D)消除信息中可能出现的0x7E字符。
- 位填充法:PPP协议用在SONET/SDH链路时,使用同步传输而不是异步传输。
- 校验和:
- 校验和字段通常是2个字节,但也可以通过协商使用4个字节的检验和。
- PPP协议对收到的每一个帧,使用硬件进行CRC检验。若发现有差错,则丢弃该帧。因此,PPP协议可保证链路级无差错接收。
LCP
LCP报文:
报文格式:
链路配置报文:
- Configure-Request:发起方发送的第一个报文;
- Configure-Ack:如果Configure-Request中的每个选项都能被接收端识别,而且都被接受;
- Configure-Nak:如果每个选项都能识别,但是只有部分能接受;
- Configure-Reject:如果Confiure-Request有部分选项不能被识别,或者不能被接受。
链路配置报文中选项的格式:
Options字段:包含0个或多个要协商的选项,同时协商;
选项的格式:
类型:
链路终止报文:
PAP- Password Authentication Protocol
PAP全称为:Password Authentication Protocol(口令认证协议),是PPP中的基本认证协议。PAP就是普通的口令认证,要求将密钥信息在通信信道中明文传输,因此容易被sniffer监听而泄漏。
发生时机:仅在建立连接的阶段发生;
认证方式:一端发送明文口令至对等端,由对方认证;
特性:无法防止重放(playback)、穷举(repeated trial)等攻击;
封装:PPP帧的数据字段;
CHAP: Challenge-Handshake Authentication Protocol
发生时机:建立连接时和连接建立之后的任何时间
CHAP全称为:Challenge Handshake Authentication Protocol(挑战握手认证协议),主要就是针对PPP的,除了在拨号开始时使用外,还可以在连接建立后的任何时刻使用。
CHAP 协议基本过程是认证者先发送一个随机挑战信息给对方,接收方根据此挑战信息和共享的密钥信息,使用单向HASH函数计算出响应值,然后发送给认证者,认证 者也进行相同的计算,验证自己的计算结果和接收到的结果是否一致,一致则认证通过,否则认证失败。这种认证方法的优点即在于密钥信息不需要在通信信道中发 送,而且每次认证所交换的信息都不一样,可以很有效地避免监听攻击。
3. Internet地址及地址解析
Internet地址
几个问题:
为啥要进行编址:统一的思想,屏蔽物理地址。
什么是地址:标识符
标识哪些东西:名字、地址、路径
Internet地址应该具备哪些性质:能定位、要唯一、好计算
物理地址能作为Internet地址吗:不能(多样性、多义性)
TCP/IP Internet编址方式如何:IP地址
Internet的概念层次:
地址 类型:
- A类:0——8位网络号,首字节1-126
- B类:10——16位网络号,首字节128-191
- C类:110——24位网络号,首字节192-223
- D类:1110——组播地址,首字节224-239
- E类:11110——保留未用,首字节240——247
特殊IP地址:
网络地址:主机号全0;
广播地址:主机号全1;
有限广播地址:32位全1;
回送地址:127...* , 网络软件测试及本机进程间的通信。该类地址用于本机进程间的通讯或者协议软件测试,通常为127.0.0.1
IP地址的实质:
IP地址标识的不一定是一台主机,实质上标识的是到一个网络的一条连接。
网络字节顺序:同样的数据在内存中存储方式不同:
在计算机中数据以小端或大端方式存储。规定:首先发送整数中的高字节。
IP编址的缺陷:
- 限制网络的平滑升级
如果号码空间不足的话,必须要升位,并改变号码的位长,这是任何号码升位中都必须要遇到的。升位后的号码是否兼容原号码取决于编号规则和号码分配,而不是号码长度。 - 对主机的移动性支持不够
标识设备的IP仅仅表示了设备的位置,并未有标识设备本身
Internet编址管理机构:
子网编址技术
可以让一个网络号跨越多个物理网络
虽然128.10.0.0这个网络号中可以包含多个物理网络,但是互联网络的其余部分都只能看到128.10.0.0
这个大网。
问题:如何指示网络部分:
解决:使用子网掩码。
具体方法:
每一个使用子网的网点都选择一个32位的位模式。若位模式中的某位为1,则对应IP地址中的某位位网络中的一位,否则位主机号的一位。
子网掩码:网络号部分全为1,主机号部分全为0.
子网选路:
- 路由表:(网络地址,子网掩码,下一跳)
- 统一的选路算法:Route_IP_Fatagram(datagram,routing_table)
从数据报中提取出目的IP地址D; if(D 的前缀匹配某直接相连的网络地址){ 通过该网络把该数据报发送到目的站 }else{ for(路由表中的每一项){ N = D逐比特与子网掩码相与 if(N等于表项中的网路地址段) 将本数据报发往表项中下一条地址所指定的路由器 } } if(没有找到匹配的表项){ 宣布选路出错; }
特殊掩码:
- 全0掩码,对应默认路由
- 全1掩码,对应特定主机路由
子网划分举例:
例1:等长子网划分
假设已分配C类网络182.28.61.0,且需要4个子网,每个子网最多25台机器。
**RFC950规定:**不允许使用全0或全1的子网(RFC1812取消了该限制)
子网位数 | 掩码 | 掩码后八位 | 子网数 | 主机数 |
---|---|---|---|---|
2 | 255.255.255.192 | 11000000 | 2 | 64 |
3 | 255.255.255.224 | 11100000 | 6 | 30 |
4 | 255.255.255.240 | 11110000 | 14 | 14 |
5 | 255.255.255.248 | 11111000 | 30 | 6 |
6 | 255.255.255.252 | 11111100 | 62 | 2 |
划分方法:使用2位子网号,掩码为:255.255.255.224
掩码后八位 | 子网号 |
---|---|
001 00000 | 192.28.61.32 |
010 00000 | 192.28.61.64 |
011 00000 | 192.28.61.96 |
100 00000 | 192.28.61.128 |
101 00000 | 192.28.61.160 |
110 00000 | 192.28.61.192 |
从以上6个子网中任意选择3个即可。
例2:变长子网划分:
假设已给C类网址202.18.6.0,设计符合下列要求的子网划分方案:
- 4个网络,每台最多26台主机
- 3个网络,每个最多10台主机
- 4个点到点串行链路
划分方法:采用不等长的子网掩码。先按最多主机数选择符合要求的子网位,然后对子网再继续划分。
地址转换- ARP协议
ARP:Address Resolution Protocol
RARP:Reverse Address Resolution Protocol
问题:
为什么要进行地址转换:必须根据IP地址找到物理地址才能进行实际的数据传送。
如何进行地址转换:直接映射 或者 动态绑定
两种地址类型:
- 空间较小且容易配置的物理地址(直接映射)
- 空间巨大且固定的物理地址(动态绑定)
直接映射:IP地址
←
→
\leftarrow \rightarrow
←→ 物理地址
动态绑定:用协议获取
基本步骤:
- 远端A广播包含目标B的IP地址IPb的ARP请求报文,请求B回答自己的物理地址PAb;
- 网络上的主机将IPb与自身的IP地址比较,若相同,则转步骤三,否则忽略。
- B将PAb封装在ARP应答报文中,之后发送给A;
- A从应答报文中提取IPb和PAb,从而获得IPb和PAb之间的映射关系。
总结:广播请求,单播回应。
提高ARP的效率:
- 设置ARP cache,存放最近解析出来的IP/MAC对;
- 请求解析时,把自己的IP/MAC地址也放在报文中;
- 收到ARP请求的所有主机都缓存其中的IP/MAC;
- 主机入网时,主动广播它的IP/MAC。
ARP中软状态使用(缓存信息失效问题)
问题:一条IP/MAC映射记录失效怎么办?
使用超时机制,一般为20分钟,如果在超过规定的超时时间内没有使用某条记录,那么就删除该记录。
优势:
- 无需专门的通知机制;
- 对硬件可靠性要求低。
缺陷:可能会’反应迟钝‘。
不同网络间地址转换:路由器转发:
转换步骤:
- A利用ARP获得路由器R接口1的物理地址’
- A把报文发给路由器R的接口1
- R从接口2使用ARP获得B的物理地址
- R把报文从接口2转发给B
ARP的封装与标识:
ARP必须封装到一个帧中
反向地址转换-RARP协议
问题:无盘工作站启动时,如何确定它的IP地址?
用它的物理地址在网上广播,请求服务器告诉IP地址。
- A发出RARP关播请求报文(MAC_A,0,MAC_A,0)
- RARP服务器给A发应答报文(MAC_S,I_S,MAC_A,I_A)
注意:
3. 无盘工作站所在的网络必须有RARP服务器
4. 有多台RARP服务器,可采用主、备份服务器技术
- 一主服务器,其余位备份服务器
- 主服务器先响应,备份服务器有两种响应方式
+ 只有在收到重复的RARP请求时才响应
+ 随机延迟一段时间后再响应
- 封装RARP的以太网帧类型为8035H
课后作业
题目:
1、第一章第1部分:网络协议分层的优缺点。
分层的优势:**简化问题,分而治之**,有利于软件升级换代。
分层的缺点:**效率低**
1. 各层之间相互独立,都要对数据进行处理
2. 每层处理完毕都要加一个头结构,增加了通信数据量
2、第一章第1部分:你认为一个路由器最基本的功能应该包括哪些?
第一,网络互连:路由器支持各种局域网和广域网接口,主要用于互连局域网和广域网,实现不同网络互相通信;
第二,数据处理:提供包括分组过滤、分组转发、优先级、复用、加密、压缩和防火墙等功能;
第三,网络管理:路由器提供包括路由器配置管理、性能管理、容错管理和流量控制等功能。
3、第一章第2部分:分析PAP和CHAP的优缺点。
PAP
优点:简单,仅在建立连接时验证,认证速度快
缺点:密匙信息使用明文传输,不安全
CHAP
优点:不传输密匙信息,可以有效避免监听攻击,相比PAP更安全
缺点:三次握手协议,验证更复杂,在建立连接后依然需要随机验证,速度慢。
4、第一章第3部分:在理想情况下,可以有多少个A类地址,每个A类地址中包含多少个可以配置给主机的IP地址?
有126个A类地址。
每个A类网络理论上可连接$2^24-2=16777214$台主机(减2的原因是:全0表示主机地址,全1表示广播地址)。
5、结合课堂中的例子,分析跨越2个或3个路由器转发IP数据报时ARP的使用步骤,以及经过每个步骤后通信双方及中间路由器ARP缓存的变化情况。
假设:有主机A和主机B,主机A经过路由器R1和R2连接到B
步骤:
1. A向路由器R1发送ARP请求报文,路由器R1获得报文后返给A一个IP地址,并保存A的IP/MAC地址映射。
2. A将包含B的IP地址的数据帧发送给R1,
3. R1根据B的IP地址查询路由表并进行路由选择,将数据报转发给路由器R2
4. R2根据自己缓存的IP/MAC地址映射,将数据报发送给B。