第3章 网络访问层
协议与硬件——网络访问层包含了管理物理网络访问过程的服务和规范。现实世界中存在很多不同类型的物理网络,它们都具有自己的规范,而且都可能作为网络访问层的基础。网络适配器的驱动程序配合操作系统和协议软件的一些关键底层组件,负责管理与网络访问层相关的主要任务。协议栈的模块化使得网络访问层里与硬件打交道的软件组件能够为和硬件无关的上层提供接口。
网络访问层与osi模型——osi模型里的物理层负责把数据帧转化为适合于传输介质的比特流;而数据链路层完成两个独立的任务,相应地划分为两个子层:介质访问控制(mac)和逻辑链路控制(llc)。mac子层负责与网络适配器通信;llc子层负责检测错误和管理子网设备之间的链路。
网络体系:
ø ieee 802.3(以太网)
ø ieee 802.11(无线网络)
ø ieee 802.16(wimax):用于移动通信长距离无线连接的技术。
ø 点到点协议(ppp):调制解调器通过电话线进行连接的技术。
物理寻址——以太网软件使用的地址是物理地址,也称为mac地址,并不是逻辑ip地址,但这个地址在网际层的接口上与ip地址有映射关系。
以太网——以太网使用的访问方法是带有冲突检测的载波侦听多路访问(csma/cd)。传统以太网在低负载情况下运行良好,但在大负载情况下会由于冲突的增多而影响性能。在现代以太网中,使用交换机可对通信进行管理,减少冲突的发生。
解析以太网帧——以太网软件从网际层接收到数据报后,执行如下操作:
1、把数据分解为64到1518字节的小块;
2、把数据块打包成帧。以太网帧一般包含前导码、目标地址、源地址、长度、数据和帧校验序列(fcs)等;
3、把数据帧传递给物理层的底层组件,后者把帧转化为比特流,并通过传输介质发送出去。
以太网上其他适配器接收到这个帧,检查其中的目标地址。如果目标地址和网络适配器的地址相同,适配器软件就会处理接受到的帧,把数据传递给协议栈里较高的层。
第4章 网际层
寻址与发送——在一个已选路由网络,tcp/ip软件使用如下策略在网络上发送数据:
1、如果目标地址和源地址在同一网段,ip地址被arp解析为物理地址,数据被直接发送到目标网络适配器。
2、如果目标地址和源地址不在一个网段,就执行如下过程:
a)数据报被引导到网关。网关地址被arp解析为物理地址,数据被发送到网关的网络适配器。
b)数据报通过网关被转发到较高级别的网段。如果目标地址在这个新网段里,数据就被发送到目标,否则数据报被发送到另一个网关。
c)数据报经过一系列网关被转发到目标网段,目标ip地址被arp解析为物理地址,数据被发送到目标网络适配器。
网际协议(ip)——ip协议用于数据报的寻址、发送和路由,它提供了一种分层的、与硬件无关的寻址系统,具有在复杂已选路由网络上传递数据所需的服务。ip地址分为网络标识和主机标识两部分。新出现的无类别域间路由选择(cidr)技术对原来用于分配a类、b类和c类地址的有类别路由选择进程进行了重新构建。cidr用 13-27位长的前缀取代了原来地址结构对地址网络部分的限制(3类地址的网络标识分别被限制为8位、16位和24位)。
ip头字段——ip头包含大量信息,包括ip版本、源ip地址、目标ip地址、数据报长度、生存期(ttl)和对路由器的特殊指令等。
ip寻址——
ø 如果32比特地址以0开头,它就是a类地址(第一个字段值0~127);
ø 以10开头,就是b类地址(128~191);
ø 以110开头,就是c类地址(192~223);
ø 以1110开头,就是d类地址(224~239),用于多播;
ø 以11110开头,则是e类地址(240~247),它是实验性质的,一般不用于实际环境。
从理论上讲,internet上每台计算机都必须有一个惟一的ip地址。实际上,代理服务器软件和网络地址转换(nat)设备的使用让未注册和非惟一的地址也可以连接internet。
特殊ip地址——
ø 全0的主机标识表示网络本身。
ø 网络标识非全1,主机标识全1是定向广播。
ø 全1 的ip地址表示仅在本网络上(即主机所连接的局域网)进行广播,叫做受限的广播。
ø 以127开头的地址是回送地址。目标地址为回送地址的消息是本地tcp/ip软件发送的,其目的在于测试tcp/ip软件是否工作正常。通常使用的回送地址是127.0.0.1。
ø 以下一些ip地址范围用于私有网络:10.0.0.0~10.255.255.255;172.16.0.0~172.31.255.255;192.168.0.0~192.168.255.255。
ø 地址范围169.254.0.0~169.255.255.255保留用于自动配置。
地址解析协议(arp)——网段中每台主机在内存里都保存着一个arp表或arp缓存的表格,其中包含着网段中其他主机的ip地址与物理地址的对应关系。如果要接受数据的ip地址当前并不存在于arp缓存,主机就会发送一个名为arp请求帧的广播。
反向arp(rarp)——rarp经常与bootp协议共同使用来启动无盘工作站。从网络服务器下载到bootp设备的操作系统被预定义为特定的ip地址。
网间控制报文协议(icmp)——路由器利用icmp消息把数据传递中的问题通知给源ip。icmp还有用于其他调试和故障诊断的功能。常见的icmp消息如下:
ø echo request(回显请求)和echo reply(回显应答):ping实际使用的命令就是icmp的echo request和echo reply。
ø source quench(源抑制):可通知源计算机降低发送数据的速度。
ø destination unreachable(目标不可到达)
ø time exceeded(超时):当数据报由于ttl为0而被抛弃时,icmp就会发送这个消息。
ø fragmentation needed(需要分解):当数据报的不可分解位被设置为1,而路由器需要分解才能发送时,icmp就会发送这条消息。
网络层其他协议——如用于路由处理的边界网关协议(bgp)和路由信息协议(rip)。ipsec协议也工作于网际层,提供一个安全的加密通信。另外还包括用于广播的协议。
第5章 子网与cidr
子网——在a类、b类和c类地址基础上把网络分解为较小单元,即在网络标识下提供第2层逻辑组织。
划分网络——借用主机标识里的一些比特来形成子网地址。一个名为子网掩码的参数指明了地址中多少比特用于子网标识、保留多少比特作为实际的主机标识。
无类别网际域路由(cidr)——cidr不需要使用地址分类体系就可以对地址空间进行灵活的划分,它使用一个名为cidr前缀(也叫变长子网掩码vlsm)的值指定地址里作为网络标识的比特数。cidr的优点之一是不仅能够对网络划分子网,还让isp或管理员能够把多个连续c类网络合并或组成一个实体,这样可以极大地简化网络路由表。这种情况下,cidr前缀发挥了所谓超网掩码的作用。
第6章 传输层
传输层简介——传输层协议提供如下功能:
ø 为网络应用程序提供接口
ø 多路传输/多路分解机制:让一台计算机能同时支持多个网络程序;让一个网络程序能够同时保持与多台计算机的连接。
ø 错误检测、流控制和验证
传输层概念
ø 面向连接和无连接——面向连接的协议会在通信计算机之间建立并维护一个连接,并在通信过程中监视连接的状态。无连接协议则以单向方式向目标发送数据,不通知,不确认。
ø 端口和套接字——端口是一个预定义的内部地址,充当网络应用程序和传输层之间的通道。套接字是一个由ip地址和端口号组成的地址。公开端口是由国际internet地址分配委员会(iana)分配给特定程序的端口。
ø 多路传输/多路分解——套接字寻址系统使得tcp/udp能实现多路传输/多路分解,而后者可以让tcp/ip协议栈较底层协议不必关心哪个程序在传输数据。
tcp:面向连接的传输协议——包括如下重要特性:
ø 面向流的处理:tcp可以一个字节一个字节地接收数据,而不是一次接收一个预定义格式的数据块。tcp把接收到的数据组成长度不定的段,再传递到网际层。
ø 重新排序:如果数据以错误顺序到达,tcp可对数据重新排序。
ø 流控制:能确保数据传输不会超过目标计算机接收数据的能力。
ø 优先与安全:很多tcp未实现。
ø 适当的关闭:确保在连接被关闭之前,所有的数据段都被传送和接收了。
tcp数据格式——源端口、目标端口、序列号、确认号、数据偏移、保留6位字段、控制标记、窗口、校验和、紧急指针、选项、填充、数据。
tcp连接——一般情况下,想接收连接的应用程序(如ftp服务程序)会把自身及其tcp端口置于被动打开状态。在客户端计算机上,ftp客户端的tcp状态一般是关闭的,直到用户初始化一个从ftp客户端到ftp服务器的连接,这对于客户端来说就是主动打开。
ø 建立连接:
1、 计算机a发送一个数据段,其中syn=1, ack=0, 序列号=a的isn;
2、 计算机b接收后返回一个数据段,其中syn=1, ack=1, 序列号=b的isn,确认号=从a接收到的最后一个序列号m+1;
3、 计算机a向计算机b发送一个数据段确认,其中syn=1, ack=1, 序列号=m+1,确认号=从b接收到的最后一个序列号n+1。
三次握手完成后,连接被打开,tcp模块就利用序列号和确认机制发送和接收数据。
ø tcp流控制:滑动窗方法,接收计算机利用“窗口”字段定义一个超过最后一个已确认序列号窗口,在这个范围内的序列号才允许发送计算机进行发送。
ø 关闭连接:计算机a发送一个数据段,其中fin=1,计算机b接收到后返回确认信息,发送剩余的数据段。b向a发送一个fin数据段,a返回确认消息,连接就关闭了。
udp:无连接传输协议——udp具有有限的错误检验功能,不能对数据进行重新排序,无连接设计让它成为网络广播所使用的协议。udp头包含4个16位字段,分别是源端口、目标端口、长度和校验和。
其它传输层协议:数据报拥塞控制协议dccp和流控制传输协议sctp提供了传统tcp和udp不具备的强化特性,而实时传输协议rtp提供了传输实时音频和视频的结构。
防火墙和端口——防火墙的基本功能就是封锁对特定tcp和udp端口的访问。它不仅能阻止外部用户访问网络内部的服务,也能阻止内部用户访问网络外部的服务。
第7章 应用层
什么是应用层——tcp/ip的应用层是一些能够意识到网络的软件组件,向tcp或udp端口发送和接收数据。
tcp/ip应用层与osi——对应osi模型相应层的介绍如下:
ø 应用层:包含的组件为用户程序提供服务、支持网络访问。
ø 表示层:把数据转化为与平台无关的格式,处理加密和数据压缩。
ø 会话层:负责管理连网计算机上程序之间的通信,提供一些传输层不具备、与连接相关的功能,比如名称识别和安全。
网络服务——应用层包含的大量网络服务是为用户提供的,如文件和打印服务、名称解析服务、远程访问、web服务、邮局服务和网络管理服务等。
应用层部分协议——bittorrent、普通internet服务cifs、域名系统dns、动态主机配置协议dhcp、文件传输协议ftp、finger、超文本传输协议http、internet消息访问协议imap、轻量级目录访问协议ldap、网络文件协议nfs、网络时间协议ntp、邮局协议pop、远程过程调用rcp、服务器信息块smb、简单网络管理协议snmp等。
api和应用层——网络api提供了程序和网络协议栈的接口,应用程序利用api的函数打开和关闭连接、从网络读取和写入数据。
tcp/ip工具:
ø 连接工具:ipconfig、ping、arp、traceroute、route、netstat、nbtstat、hostname
ø 文件传输工具:ftp、tftp、rcp
ø 远程工具:telnet、rexec、rsh、finger
ø internet工具:浏览器、新闻阅读器、电子邮件阅读器、archie、gopher、whois