《TCP/IP协议详解》学习笔记(一):概述
1. 网络分层
- TCP/IP模型层次
OSI参考模型与TCP/IP模型层次关系
链路层:处理各种传输媒介的物理接口细节;
网络层:处理分组在网络中的活动,提供逐跳(Hop by hop)的通信;
运输层:为两台主机上应用程序提供端对端(End to end)的通信;
应用层:处理特定应用程序细节。
端系统(End system,如主机)间通信,需要应用层和运输层的端到端协议;
而端系统与中间系统(Intermediate system,如路由器)间的通信的,则需要网络层的逐跳协议。
网络层IP只是尽可能快地将分组从源节点送到目的节点,是不可靠的服务;
TCP采用超时重传、发送和接收端到端确认分组等机制,在IP服务的基础上实现可靠的服务。
TCP/IP协议族间不同层次协议的通信
- 连接网络的方法
路由器具有两个以上的网络接口层,称之为多接口(Multihomed),是在网络层对网络进行互连,功能为单纯把分组从一个接口传递到另外一个接口;
网桥是链路层上对网络进行互连;
TCP/IP更倾向于使用路由器而非网桥连接网络。
2. 数据的封装与分用
- 数据的封装
应用程序往TCP传输数据时,数据被送入协议栈,然后逐层通过,每层在收到的数据上添加该层的首部信息。
TCP层 --> IP层:TCP报文段、TCP段(TCP segment);
IP层 --> 链路层:IP数据报(IP datagram)。关于IP层到链路层间数据传输的单元,更准确的说法应该是分组(packet)。分组既可以是IP数据报,也可以是IP数据报的一个片(fragment)。
以太网数据帧(即IP数据报部分)的物理特征是长度必须介于46 ~ 1500字节间。
数据进入协议栈的封装过程
运输层协议在生成报文首部时需要传入一个应用程序的标示符,TCP和UDP都使用一个16bit的端口号来标识不同的应用程序。TCP和UDP的首部都包含源端口号和目标端口号;
IP首部中有一个长度为8bit的协议域,用于标识数据所属协议,1表示为ICMP协议,2表示为IGMP协议,6表示为TCP协议,17表示为UDP协议;
以太网帧首部中含有16bit的帧类型域,其中以某种形式标识生成数据的网络协议。
- 以太网帧的分用
每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议,该过程叫分用(Demultiplexing)。
以太网数据帧分用的过程
3. 杂项
- 互联网地址
网络地址由网络号与主机号组成;
五类地址分类:
类别 |
IP地址组成 |
范围 |
||||||
A类 |
|
0.0.0.0 ~ 127.255.255.255 |
||||||
B类 |
|
128.0.0.0 ~ 191.255.255.255 |
||||||
C类 |
|
192.0.0.0 ~ 223.255.255.255 |
||||||
D类 |
|
224.0.0.0 ~ 239.255.255.255 |
||||||
E类 |
|
240.0.0.0 ~ 255.255.255.255 |
三类IP地址:
单播地址(目的端为单个主机);
广播地址(目的端为给定网络上的所有主机);
多播地址(目的端为同一组内所有主机)。
- 域名系统
域名系统是一个分布的数据库,提供IP地址和主机名间的映射信息。
- 客户--服务器模型
服务器为客户提供一些特定的服务;
服务分为:
重复型,客户独占服务器,在处理客户请求时服务器不能为其他客户机提供服务;
并行型,服务器启动新的服务来处理客户请求,完成后该服务将被终止。可以并发处理客户机的请求。
- 端口号
TCP和UDP采用16bit的端口号来识别应用程序;
任何TCP/IP实现所提供的服务都用知名端口(1~1023),这些知名端口由IANA管理;
Unix系统有保留端口。
客户端端口
客户端不关心其使用的端口号,仅需保证端口号在机器上唯一即可;
又称为临时端口,仅在用户运行客户端程序时存在;而服务器只要开机其服务就运行;
大多数TCP/IP实现给临时端口分配1024~5000之间的端口;大于5000的端口是为其他服务预留。
- 标准化
标准化过程;
RFC;
标准的简单服务;
互联网;
TCP/IP软件实现;
TCP/IP应用编程接口:socket和TLI(Transport Layer Interface)