TCP/IP

151 阅读23分钟

概述

网络系统由硬件系统(如网卡、集线器和路由器等)和软件系统(如操作系统和通信协议等)
TCP:传输控制协议
IP:互联网协议

分层体系结构与协议栈(Protocol Stack)

TCP/IP层次结构

  • 应用层:Telnet、FTP、HTTP、DNS、SNMP、SMTP等
  • 传输层:TCP和UDP
  • 网际层:IP、ICMP和IGMP
  • 网络接口层:设备驱动程序和网络接口卡等

层次结构的优点

  1. 各层之间相互独立
  2. 易于设计与实现
  3. 易于维护

网际层

把源主机上的分组根据需要发送到互联网中任何一台目标主机上。
数据单位:IP数据报(也称IP分组)
IP层提供一种“尽力而为”的数据报传输服务,不能保证数据总是可靠地从源主机传送到目标主机。
协议栈:IP(网际协议)、ICMP(Internet互联网控制报文协议)和IGMP(Internet组管理协议)

传输层

两台主机上对应的应用进程之间的通信,端到端之间。端到端的通信是在传输层两个通信实体之间进行的,就像两个通信实体之间建立了一条逻辑通路一样。\

  • TCP(传输控制协议) 高可靠性,将源主机的数据流无差错地传输到目标主机。可分片,当接收到网络层传来的分组时要对收到的分组进行确认。对丢失的分组设置超时重发等。需要增加额外开销。
  • UPD(用户数据报协议) 不保证数据报能正确到达目标端,通信可靠性靠相应的应用程序来提供,但效率高。

应用层

Telnet(远程登录协议)、FTP(文件传输协议)、HTTP(超文本传输协议)、DNS(域名协议)、SNMP(简单网络管理协议)、SMTP(简单邮件传输协议)

TCP/IP的工作原理

Internet网络结构

三个级别

第一个:组成Internet的国际或国家主干网
第二个:连接到国际或国家主干网上的地区级网络
第三个:接入地区主干网的企业或校园网
它们通过路由器连接

TCP/IP通信模型

举个例子,应用层的FTP程序的请求信息,在传输层中加上TCP的控制信息,在网际层加上与IP有关的信息,将信息送到物理网络。经由路由传输(存储-转发)。IP层识别该的信息目标主机为本机则接收,TCP层做一些可靠性验证工作,确认无误后送到本机的FTP服务器程序。

TCP/IP数据的封装与解封过程

  • 每一层都会加一些首部信息,有时还会加一些尾部信息,这个过程就是封装过程(或称打包)
  • 目标主机各层的识别、提取和处理就是解封。
  • 路由器:网络接口、IP层

TCP/IP操作系统边界与地址边界

  • 操作系统边界 在传输层与应用层之间,应用层由操作系统之上的应用软件实现,之下各层有操作系统内核实现。
  • 地址边界 在网际层与网络接口层之间,之上使用IP地址,之下使用物理地址ARP将互联网地址转换成物理地址

OSI参考模型的补充(了解)

  • 会话层:在传输层基础上提供应用进程之间的会话控制机制,包括建立和维持会话
  • 表示层:为异构的计算机通信提供一种公共表示方式,以便使传输的信息最终送到目标端以后仍保持原来信息的含义而不发生改变。如IBM机器上的EBCDIC编码传输到PC转换为ASCII编码,文本加密、解密、压缩和解压

网络接口层

传输方式

  • 模拟传输:信源(数字信号)调制器(模拟信号)信道(模拟信号)解调器(数字信号)信宿
  • 数字传输:信源(模拟信号)调制器(数字信号)信道(数字信号)解调器(模拟信号)信宿
  • 串行通信与并行通信

数据通信方式

  • 单工通信:无线电广播、电视广播
  • 半双工通信:航空和航海无线电台
  • 全双工通信

异步传输

起始位(一位)字符(七位)校验位(一位)终止位(一位)

信道复用技术

频分多路复用技术、时分多路复用技术、光波分多路复用技术

数据链路层

总体功能:将不可靠的物理链路变成可靠的物理链路

主要功能

  • 数据链路建立和拆除
  • 帧传输和帧同步:由字段标志组成的传输单位,有填充字符的首尾界符法、带填充位的首尾标志法和物理层编码违例法等。用一个目的就是使接收方准确地从收到的比特流中识别出帧边界取出帧,即所谓的帧同步
  • 差错与流量控制:差错控制方法有ARP(自动重发请求技术)FEC(前向纠错技术);流量控制方法有停止等待协议和滑动窗口协议
  • 数据链路管理:各种服务质量参数,如检测到不可纠正错误的平均时间、漏检差错率、传输延迟和吞吐量等。

停止等待流量控制机制

一定时间内收到ACK确认帧才发送下一帧,收到NAK否定性确认帧或未收到回应则重发。帧有编号确认正确性和唯一性。

滑动窗口流量控制

窗口指能够连续发出或接收的帧的序号范围,它反映了正在流动的帧的个数。

差错控制

差错检验与纠正
  • 奇偶校验 最高位做奇偶校验位
    只检验不纠错,且只能发现一位错误
  • 方块校验 水平垂直冗余校验LRC,可发现2-3位错误,可自动纠正错误
  • 循环冗余校验

点对点协议

Point to Point(PPP),包含三个内容:

  • 一个将IP数据报封装到串行链路的方法
  • 一个用来建立、配置和测试数据链路连接的链路控制协议
  • 一套网络控制协议,其中的每一个协议支持不同的网络层协议

格式

  • F:标志字段,一个字节、两位
  • A:地址字段,一个字节、两位
  • C:控制字段,一个字节、两位
  • 协议:PPP字段,如IP数据报、链路控制数据有各种不一样的协议字段
  • 数据部分
  • FCS:协议尾部,表示差错校验的循环冗余校验码,若出现差错则丢弃该帧
  • 7E(末尾)

局域网技术

一个局域网的组成包括:网络服务器、网络工作站、网络适配器和传输介质。

  • 网络服务器 网络共享资源的管理中心
  • 网络工作站 连接到计算机网络上供用户使用的前端窗口,如各种PC
  • 网络适配器
    • 网卡:
      • 实现传输介质的物理连接和电信号匹配;接收来自设备(服务器、工作站等)的数据
      • 在得到对介质发送权力之前,提供数据的缓冲
      • 实现局域网数据链路层的功能
      • 实现某些接口功能
  • 传输介质 最常用的为双绞线
  • 网络软件

VLAN(虚拟局域网)

建立在局域网交换机或ATM交换机之上,以软件方式来实现逻辑工作组。
优点:

  • 广播控制 进一步实现隔离
  • 安全性
  • 性能 提高网络中各个逻辑组中用户的传输流量(可以理解为只影响了单个VLAN用户,其他组的用户不受影响)
  • 网络管理 不需要重新布线

互联网络层

internet/Intranet-Extranet

路由器

工作原理

路由器负责把IP报文送到目的主机,若找不到直接的路由器,则报文会发送给被称为“默认网关”(default gateway)的路由器上。
默认网关是每台主机上的一个配置参数,它是接在同一个网络上的某个路由器端口的IP地址
路由器转发IP报文时只根据IP报文中的目的IP地址的网络号部分选择适合的端口,将IP报文送出去,每个路由器收到IP报文后要判定端口所连接的是否是相同的子网,如果是就通过端口上传至网络上,若不是就选择下一个路由器转发,若不知道送到哪里就给默认网关。

功能

  • 在网络之间接收和发送数据包
  • 为网际通信选择最合理的路由
  • 根据需要可对数据包进行拆分或组装
  • 对于支持多通信协议的路由器,可以将两个使用不同协议的网络连接起来
  • 网络安全功能,大部分路由具备一定的防火墙功能,能屏蔽内部网络IP地址,自由设定IP地址、通信端口号过滤等,使网络更安全。

连接技术

  • 面向连接的互联技术 虚电路。最大缺点是如果不能保证虚电路中沿途经过的节点都可靠地发送数据。
  • 无连接的互联技术 数据包各自选取转发线路,无法确保顺序性。
  • IP互联原理

IP

只向上层提供所需的最小服务,如分组确认、流量控制之类的会交给TCP之类的上层协议。

主要功能

  • 将上层数据或同层数据封装到IP数据报中
  • 将IP数据报送到最终目的地
  • 为了使数据能够在链路层上进行传输,对数据进行分段
  • 确定数据报到达其他网络的路径

在TCP/IP协议栈中的地位与特点

都需要通过IP传输,是通信网络与高层协议的分界

  • 特点
    • 无连接不可靠,尽最大努力
    • IP互联网中主机没有主次之分,都是平等的
    • 没有确定的拓扑结构
    • 任何一台主机都有独一无二的IP地址,有多个网卡的计算机每个网卡有一个IP地址,有多个IP地址的主机称为多宿主机
    • 互联网中有IP地址的设备不一定是计算机也有可能是路由器、网关等,因为与互联网独立连接的设备都要有IP地址

IP数据报格式

  • 版本号 如IPv4/IPv6,四位二进制
  • 头长度 四位二进制,报文头的长度。普通的IP数据报没有任何选项,则该字段是5(20个字节长度)
  • 服务类型TOS
    • 优先级:3位(0~2位)
    • 短延迟位
    • 高吞吐量位
    • 高可靠位
    • 低费用位
    • 保留位:第6位和第7位 共8位
  • 总长度 16位
  • 生存时间 8位,TTL,Time to Live,最大路由器数,设置为最大值,一个路由执行-1,到0丢弃
  • 上层协议标识 8位
  • 校验和 校验头数据,对于每16位进行反码求和
  • 原地址 32位
  • 目的地址 32位

分片与重组

受限于最大传输单元(MTU)

分片
  • 标志 3位:未用、DF(不分片)、MF(片未完1/0)
  • 片偏移 13位

选项

  • 源路由选择
  • 记录路由
  • 记录时间戳

IP地址

网络号+主机号

分类

类别 类标识 第一字节 网络地址长度 主机地址长度 最大网络数 最大主机数 选用范围
A:0 1-126 1字节 3字节 126 16777214 大型网络
B:10 128-191 2字节 2字节 16382 65534 中型网络
C:110 192-223 3字节 1字节 2097150 254 小型网络
D:1110 224-239 / / / / 多点播送
E:11110 240-247 / / / / 保留地址

子网划分

网络地址:子网地址:主机地址
子网掩码:标准总的网络号长度

特殊IP地址

网络地址

Netid=0,Hostid=0

直接广播地址

Netid=特定网络号,Hostid=0

有限广播地址

Netid=1,Hostid=1

本网特定主机地址

Netid=0,Hostid=特定主机号

回送地址

Netid=127(1111111),Hostid=任意值

本网络本主机

Netid=0,Hostid=0

Internet控制报文协议

ICMP

报文格式

类型8位,代码8位,校验和16位,ICMP数据区

报文类型

  • 0:Ping的回送应答
  • 3:各种不可达(主机、协议、端口),未知
  • 4:源站抑制(拥塞控制)
  • 5:各种重定向
  • 8:Ping的回送请求
  • 9:路由通知
  • 10:路由请求
  • 11:超时
  • 12:参数出错
  • 13:时间戳请求
  • 14:时间戳应答
  • 17:地址掩码请求
  • 18:地址掩码应答

ICMP差错报文

  • 由路由器发送至源主机
  • 只针对IP数据报的传输差错
  • 不享受任何优先级也不保障可靠性
  • 随着抛弃出错
  • 有几类特殊报文不会产生相应的差错报告:ICMP的报文差错、链路层广播、非第一片、广播或多播地址、源地址不唯一

ICMP控制报文

  • 拥塞控制与源站抑制报文
  • 路由控制与重定向报文

ICMP请求与应答报文

PING、地址掩码、时间戳

路由选择与路由协议

路由表

目标地址、子网掩码、下一站路由器地址

选择算法

一般算法:

  1. 从IP数据报中取出目标IP地址
  2. 搜索路由表,若找到就转发,若找不到则下一步
  3. 搜索路由表,IP地址与子网掩码求“与”,寻找匹配的表目。若找到就转发,若找不到就下一步
  4. 搜索路由表,找默认的表目,找到就转发,找不到就选路失败发送“目标不可达”ICMP报文
路由表建立与刷新
  • 静态路由:操作系统配置
  • 动态路由: 路由守护程序(routing daemon)
    不同的选路策略:线路速度、带宽、延迟、可靠性、跳数等因素。
    自治系统:由单个实体管理的系统①基于距离-向量路由算法的路由信息协议②链路-状态路由算法
路由选择协议

OSPF最短路径优先

地址转换协议

ARP:IP地址->MAC地址
RARP:MAC地址->IP地址

IPv6

新特性

  • 全新地址管理方案
  • 简洁数据报协议头
  • 灵活的可拓展性
  • IPv6的安全性
  • IPv6的移动性
  • 不允许有数据包分段

格式

  • 版本号:四位
  • 通信流类型:四位,音频、视频
  • 流标号:20位
  • 负荷长度:16位
  • 下一首部:16位
  • 路径段限制:8位
  • 源地址:128位
  • 目的地址:128位

IPv6地址

冒分十六进制记法、冒分十六进制允许零压缩法、冒分十六进制记法和点分十进制记法

地址空间

类型前缀对应着地质类型

地址类型

单点传送、多点传送、任意点传送

传输层

点到点与端到端

若干个点到点组成端到端
点到点:网络互联层实现,屏蔽了网络之间的差异
端到端:比网络互联层通信更高一级的通信方式,完成应用程序(进程)之间的通信,端到端的通信由传输层来实现

端口

概念:为了识别传输层上不同的网络通信程序

  • 网络通信进程的工作过程:
  1. 向系统提出动态申请
  2. 系统(操作系统内核)返回一个本地唯一的端口号
  3. 进程通过系统调用把自己和这个特定端口绑定起来
  4. 传输层通过这个端口号把数据送往不同的应用程序

UDP用户数据报

在IP层之上提供协议端口功能,标识源主机和目标主机上通信进程。无连接、不可靠的通信协议
UDP从进程的缓冲区接收进程每一次产生的输出,对每次输出都生成一个UDP数据报,然后把生成的UDP数据报直接封装在IP数据报中进行传输,因此在传输层使用UDP时,发送端不需要发送缓冲区。

格式

需要返回数据应用程序端口号,不需要0
UDP源端口号(16位),UDP目标端口号(16位)
UDP长度(16位),UDP校验和(16位)
数据区

伪首部

源端IP地址(32位),目标端IP地址(32位),填充域(8位,全0),协议(8位,UDP值为17),UDP长度(16位)
伪首部不是真正的首部,仅用于差错检查。还是16位为单位计算

特点

  • 无连接、不可靠
  • 唯一可靠措施就是校验和
  • 当端口号没有匹配目标会丢弃该数据报
  • 设计时简单性保证了UDP的高效性和低延时性
  • 用于传输延时小,对可靠性要求不高,有少量数据进行传输。如DNS/TFTP(简单文件传输)等

TCP传输控制协议

格式

TCP源端口号(16位),TCP目标端口号(16位)
序列号(32位)
确认号(32位)
首部长度(4位)保留(6位)URG/ACK/PSH/RST/SYN/FIN(6位)窗口大小(16位)
校验和(16位)紧急指针(16位)
选项+填充
数据区

  • URG:紧急指针
  • ACK:确认号
  • PSH:push操作标志
  • RST:连接复位标志
  • SYN:同步序列号
  • FIN:连接终止符
  • 紧急指针:紧急数据已经被放置在普通的数据流中和这些数据最后一个字节的指针,具体对于紧急数据的定义和处理由应用程序决定

TCP连接的建立与关闭

三次握手

  • 客户机的应用程序进程向其传输层TCP发出建立连接的命令,SYN置1,初始序列号为x。
  • 服务器发送一个包含服务器初始序号y,SYN置1,确认号置为x+1。
  • 客户机向服务器发送确认号y+1

关闭连接

  • 如客户端FIN置1
  • 服务器设置确认号为序列号+1,半关闭
  • TCP层向客户机的TCP层发送一个FIN置1的报文段
  • 客户机向服务器发送确认号为序列号+1

流量控制和拥塞控制机制

WIN和MSS两个字段\

  1. 拥塞窗口被初始化为1个报文段长度,建立连接时,发送方只发送一个长度为MSS的报文段
  2. 正常收到确认后,拥塞窗口增大为2MSS
  3. 再一次往返,拥塞窗口增大为4MSS
  4. 8MSS
  5. 若发生传输超时或丢失情况则窗口减为1/2

超时重发机制

有定时器
超时间隔可以随网络的通行状况而自动调整,具有一定的自适应性。与一条连接从发送端发出数据到收到确认所需的往返时间(RTT)。
具体实现时,可以在每条连接上保持一个RTT变量,发送一个TCP报文段的同时,启动定时器,收到确认后计算出本次的RTT值,然后求出一个新的加权平均值。
RTT=a*本次RTT+(1-a)*旧RTT
RTO=RTT*b

应用层

网络工作模式

C/S模式

对客户端要求高、对网络性能要求高、封闭式系统,不同系统之间无法交流、UI风格不统一、操作使用复杂,不利于推广。
用户需要安装相应的应用软件

B/S模式

易用性好、易于维护、信息共享度高、扩展性好、安全性好、支持广域网、保护企业投资。
组成:浏览器、Web服务器、数据库服务器

  • 过程:
  1. 浏览器向服务器提出请求
  2. 服务器调出相应的HTML、XML、ASP或JSP文件
  3. 服务器执行相应的ASP或JSP脚本程序,其间可能会和数据库服务器之间建立连接(curd),生成HTML文档
  4. 返回HTML文档以HTTP传输到客户端
  5. 浏览器解释HTML文档,将请求得到的信息呈现给用户

域名系统

在Internet中每一种网络资源或服务站点都要使用唯一的IP地址来标识。
当用域名来标识网络站点时,需要将域名映射成IP地址。
DNS由域名空间、域名服务器和解析器三部分组成。
顶部是根,依次是顶级域、次级域、子域和主机,以.分割。

域名服务器

  • 主名字服务器 每个区域至少有两个主名字服务器来保存所有的区域内信息。
  • 唯高速缓冲
  • 转发服务器

域名解析实例

DNS工作过程:

  1. 由运行域名解析的软件(即解析器)向本地名字服务器发出查询域名为comp.lzpcc.edu.cn的主机地址请求。
  2. 本地名字服务器向根cn名字服务器发出查询comp.lzpcc.edu.cn地址的请求
  3. 根名字服务器返回给本地名字发服务器一个IP地址,指向edu.cn名字服务器
  4. 本地名字服务器向edu名字服务器发出查询comp.lzpcc.edu.cn地址的请求
  5. edu名字服务器返回给本地名字服务器一个IP地址,指向lzpcc.edu.cn名字服务器
  6. 本地名字服务器向lzpcc.edu.cn名字服务器发出查询comp.lzpcc.edu.cn
  7. lzpcc.edu.cn名字服务器将comp.lzpcc.edu.cn名字服务器的IP地址返回给本地名字服务器
  8. 本地名字服务器将该地址返回给解析器 Caching技术可以帮助快速查询

远程登录协议Telnet

电信网络协议,至少应满足如下条件:

  1. 具有一个本地系统,可以是一台终端或一台主机
  2. 具有一个远程系统,运行某种操作系统的一台独立主机
  3. 本地系统和远程系统可以互相通信
  4. 本地系统的用户在远程多用户系统中有用户账号

超文本传输协议

在Internet中工作的主机,当要访问万维网中的某个网页时,大致要经过的步骤:

  1. 用户首先要确定网页文件所在的URL(统一资源定位服务器),由URL唯一确定用户要访问的文件在Internet上的位置,如设为http://www.lzpcc.edu.cn/app/exam.html
  2. 浏览器向DNS发出请求,要求把域名www.lzpcc.edu.cn转换IP地址
  3. DNS查询向浏览器发出应答
  4. 查询到IP地址后进入HTTP工作阶段。浏览器向IP地址的目标主机发出与端口80建立一条TCP连接的请求。
  5. 连接建立成功后,浏览器发出一条请求传输网页的HTTP命令,格式为GET /app/exam.html
  6. 当域名为www.lzpcc.edu.cn的服务器接收到请求则向浏览器发送exam.html文件
  7. 文件发送完成后,服务器主动关闭TCP连接,至此HTTP的工作过程结束了
  8. 浏览器显示收到的网页文件exam.html
  9. 如果exam.html文件包含图片,还要与服务器建立TCP连接以下载图片

客户机HTTP请求

格式

请求方法 URL HTTP版本号
请求头信息
请求数据
<一个空行,是请求的结束行>

客户可用的请求方法

  • GET 返回URL所指的文件,一般用于请求下载Web网页
  • HEAD 请求文档头,类似GET,只是Web服务器仅返回指定文档的首部信息。通常用于测试超文本链接的正确性、可访问性和最近是否进行了修改
  • POST 与GET方法相反,请求服务器接收指定文档,不是替换已有文档,只是将新数据附加到它的后面。一般用于向新闻组发送一条消息或发送能由交互用户填写的表格等。
  • PUT 与GET方法相反,从客户端传送的数据取代指定文档中的内容,使客户可以向远程Web服务器传送网页等文件 -DELETE 请求服务器删除指定的页面
  • OPTIONS 运行客户端查看服务器性能
  • TRACE 用于测试运行客户端查看的消息回收过程

请求头信息

用户访问Web中某一个网页时一定要告诉浏览器三个问题:网页如何下载到本地主机、网页在Web中的什么地方、网页名称是什么。

使用什么协议主机地址或域名网页文件名称,格式为:
URL=协议名称+主机名(或IP地址)+目录与文件名

可选项
  • Accept 客户端接收的数据类型,如:Accept: text/html
  • User Agent 客户方软件类型
  • Authorization 认证消息,包括用户名和口令
  • Referer 用户获取的Web页面

服务器HTTP应答

格式

状态行
相应头
相应数据\

状态行

HTTP版本号+响应码,如HTTP/1.1 200 OK
响应码:2xx成功,3xx重定位,4xx客户差错,5xx服务器差错

响应头
  • Server Web服务器程序的信息
  • Date 服务器日期和时间
  • Last Modified 最近一次修改时间
  • Expires 请求文档过期时间
  • Content-length 数据长度(字节)
  • Content-type 数据MIME类型
  • WWW-authenticate 通知客户端需要的认证信息

FTP

  • 类型
  1. ASCII
  2. EBCDIC
  3. 图像文件
  4. 本地文件
  • 数据结构
  1. 文件结构
  2. 记录结构
  3. 页结构
  • 传输方式
  1. 流方式
  2. 块方式
  3. 压缩方式

TCP/IP的实现

Windows下TCP/IP提供的功能

  1. 企业网络互联功能
  2. 不同系统之间的访问和文件传输功能
  3. C/S开发应用系统框架
  4. 访问Internet

相关网络服务

  1. 客户端和服务器的动态主机配置协议(DHCP)
  2. Windows Internet名字服务(WINS),即用来命名客户机和服务器的一种基本网络输入/输出系统(NetBIOS)
  3. 客户机和服务器域名系统(DNS)
  4. 拨号支持(点到点协议或串行线路)
  5. 点到点隧道协议(PPTP)和用于虚拟专用网络的第二层隧道协议(L2TP)
  6. TCP/IP网络打印
  7. 简单网络管理协议(SNMP)
  8. NetBIOS接口
  9. Windows套接口版本2(Winsock2)接口
  10. 基于IP路由器的Microsoft网络浏览支持
  11. 高性能的Microsoft Internet信息服务(IIS)
  12. 基本的TCP/IP连接工具,如Finger/FTP/Rcp/Rexec/Rsh/Telnet和Tftp
  13. 面向简单网络协议的客户机和服务器软件
  14. TCP/IP管理和诊断工具