第六章 网络互联协议TCP/IP
6.1 TCP/IP 协议簇简介
- TCP/IP 实际上是一组协议的代名词,还包括许多不同功能且互为关联的协议,组成了TCP/IP簇
- 历史
- 1973年,由斯坦福大学提出TCP/IP,在1977-1979退出TCP/IP体系结构和协议规范,在83年被UNIX系统使用,之后称为UNIX的标准协议
- 由于TCP/IP具有跨平台性,开始在ARPANET上实施,所有接入ARPANET的计算机全部采用TCP/IP作为通信协议
- 随着ARPANET发展,形成了因特网
6.1.1 TCP/IP各层的协议
-
传输层相当于OSI/RM 的传输层,这层定义了:面向连接的可靠报文传输服务TCP,和无连接的不可靠的UDP
-
网络互联层提供了基于无连接的数据传输、路由选择、拥塞控制和地址映射功能,分别由IP、ARP、RARP和ICMP实现
- IP提供数据报按IP地址传输、路由选择
- ARP和RARP提供逻辑地址与物理地址映射功能
- Internet控制报文协议提供传输差错控制信息以及主机/路由器之间的控制信息
-
网络接口层负责将IP分组封装成帧在物理网络上传输,或者将从物理网络收到的帧解封然后将IP分组递交给高层
- 这一层与具体的物理网络实现有关,自身并无专用的协议
6.1.2 基于TCP/IP 的数据传输过程
- 传输层的协议数据单元称为段
- 网络层称为数据报
- 链路层称为帧
- 数据封装成帧后发到传输介质上在局域网内传输,到达目的主机后,每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理
- 如果目的主机和源主机不在同一个网络中,则将IP数据报传送到路由器中
6.2 互联网协议IP
6.2.1 IP的主要功能和提供的服务
- 功能
- 寻址:用IP地址来标识网络上的主机,每个IP数据报中,都会携带源IP地址和目标IP地址
- 数据报的路由转发:根据IP数据报中接收方的目的IP地址,确定是本网传送还是跨网
- 数据报分段和充足
- 提供的服务
- 网络互联层的IP向传输层提供的是一个不可靠的、无连接的、尽力的数据报投递服务
- 不可靠: 无法确保数据报投递的结构
- 无连接的投递服务:每一个IP数据报是独立处理和传输的
- 尽力:绝不简单地丢弃数据报,只要有一线希望,就尽力投递
6.2.2 IP数据报的格式及封装
- 格式
- 一个IP数据报由报头(首部)和数据两部分组成,其中报头包含20B的固定单元和可变长度的任选项和填充项
- 封装
- IP数据报的投递利用了物理网络的传输能力,网络接口层负责将IP数据报封装到具体物理网络的帧或者分组中的信息字段,即将IP数据报封装到以太网的MAC数据帧中
- IP地址放在IP数据报头部,MAC地址放在MAC帧头部,网络互联层及以上用IP地址,以下用MAC地址
6.2.3 IP 地址
- IP地址是网络互联层的逻辑地址。用于标识主机在网络中的位置
- IP地址的结构及表示方法
- IPV4中规定IP地址由32位(4B)二进制组成
- 网络ID具有唯一性,用来识别入网主机所在的网络,而主机ID用来区分同一网络上的不同主机
- 点分十进制:将32位IP地址中的每8位二进制数用其对应的十进制数字表示
- IP地址的分类
-
A类:以0开始的IP地址,第一个字节取值范围00000000 ~ 01111111,即0-127,后3个字节表示主机ID,可用的A类网络有126个
-
B类:以10开始,可用的B类网络有16382个
-
C类:以110开始,可用的高达209万多个
-
D类:多播地址,保留地址,
-
E类: 实验性地址,保留作为以后使用
-
主机标识位全为1的表示该网络中的所有主机,即广播地址。主机标识位全为0的地址表示该网络本身,即网络地址
- 特殊的IP地址
- 网络地址: 主机ID全为0
- 直接广播地址:主机ID全为1,一台主机可以把数据分组广播给某个网络中的所有结点
- 32位全为1,有线广播地址或本地网广播地址
- 32位全为0,本机地址
- 回送地址:任何一个以127开头的IP地址
- 公有地址和私有地址
- 公有地址:Internet可直接访问的地址
- 将ABC三类的一部分留着专用,作为私有IP地址,路由器或者网关会自动将这些IP地址拦截在局域网络之内,
- 使用私有IP地址的私有网络在要连接到公共网络时,本地主机必须经过网络地址迁移服务器(NAT或者代理服务器)
6.2.4 子网与子网掩码
6.3 控制报文协议ICMP
- 为了使互联网能报告差错,或提供有关意外情况的信息,在IP层加入了一类特殊用途的报文机制,即ICMP
- 作用
- 鉴于IP本身的不可靠,ICMP的目的仅仅是向源主机告知网络环境的问题
- ping命令也算ICMP的实用程序
- ICMP报文的形成与传输
- 当路由器发现某份IP数据报因为某种原因无法继续转发和投递时,则形成ICMP报文,并从IP数据报中截取源主机的IP地址,形成新的IP数据报,转发给源主机
- 如果携带ICMP的IP数据报在传输中出错了,则该路由器不再产生任何新的差错报文
- 格式与封装
6.4 地址解析协议ARP和RARP
- 为了正确的向目的站传送报文,必须把目的站的32位IP地址转换成48位以太网的目的地址
- 就需要在网络互联层由一组服务将IP地址转为相应的物理地址
- ARP:地址解析协议,用于从IP地址到物理地址的映射。RARP,反向
- 映射过程
- 源主机在ARP缓存表中查看有无目的主机IP的地址,若有,可查出其对应的MAC地址,将查到的MAC地址写入MAC数据帧中,然后通过局域网发往此硬件的地址的主机,若没有,这可能是目的主机刚入网或者刚开机,其ARP表还是空的
- 这时,源主机通过广播ARP请求帧的方式查找目的主机的MAC地址,并将获取到的信息写入源主机的ARP缓存表
6.5 传输协议
- TCP是面向连接的可靠的传输服务
- UDP是无连接的不可靠的传输服务
6.5.1 协议端口号
- 为了能区分对应的应用程序进程,引入了协议端口号
- TCP和UDP使用端口号作为其数据传送的最终目的地
6.5.2 用户数据报协议UDP
- 开销小,效率高,不可靠
- 通常采用UDP的应用层协议有域名系统DNS中域名地址/IP地址的映射请求和应答、TFTP简单文件传输
6.5.3 传输控制协议TCP
- 可靠传输而交换的数据和确认信息的格式
- TCP的服务及特性
- 在IP提供的服务基础上,增加了确认-重发、滑动窗口和复用或解复用等机制
- 面向连接、可靠的流投递服务
- 一台主机上的某个TCP端口号可以被多个连接所共享。因此程序员可以设计同时为多个连接提供服务的程序,而不需要为每个连接设置各自的本地端口号
- 窗口的范围决定了发送方发送的但未被接受方确认的数据报的数量
- 全双工传输
- 报文段的格式及数据的封装
-
确认位:ACK,只有当ACK=1时确认序号字段才有意义
-
重建位:RST,当RST=1时,表名出现严重差错,必须释放连接,然后再重建传输连接
-
同步位:SYN,在连接建立时使用,当SYN=1而ACK=0时,表明是连接请求报文段
-
数据链路层的头部指明了源主机和目的主机的MAC地址,IP层的头部指明了源主机和目的主机的IP地址,TCP层的头部指明了主机上应用进程的源端口和目的端口
- 建立与关闭
-
发送前必须建立连接
-
TCP连接的建立必须经过三次握手才能建立起来,整个过程由发送方请求连接,接收方确认,发送方再发送一则关于确认的确认3个过程组成
-
一旦连接,就可以双向对等流动,没有主从关系
-
协议必须使用超时或者重传机制,如果重传的连接请求和原先的连接请求在连接正在建立时到达,或者当一个连接已经建立、使用和结束之后,请求才到达,就会出现问题,所以采用三次握手协议可以解决这些问题
-
关闭连接
-
关闭一次连接需要经过4次握手。这是由TCP的半关闭所造成的,由于TCP连接时双工的数据通道,可以看做两个独立的不同方向数据流的传输,因此,每个方向的连接必须单独的进行关闭
6.6 应用层协议
- HTTP
- FTP
- TELENT
- SMTP
- SNMP
- DNS