第一章 概述
1.分层
TCP/IP协议族分为4层:应用层,运输层,网络层,链路层。

应用层和运输层使用End-to-end协议,提供端到端服务;

网络层提供Hop-by-hop协议,提供点到点服务。


××尽管TCP提供了可靠的服务,但是优秀的程序员在编写程序的时候,应该把TCP的思想运用到应用程序中,考虑超时重传和确认分组等问题,而不完全依赖于TCP的可靠性!

本书将要讨论的TCP/IP族协议:


TCP,UDP都使用IP作为网络层协议。

ICMP是IP协议的附属协议,IP层用它来与其他主机或路由器交换错误报文和其他重要信息,流行的诊断工具ping 和 traceroute 都使用了ICMP。

IGMP是Internet组管理协议,用来把一个UDP数据报【多播】到多个主机。

ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。

2.互联网的地址
5类地址格式:


××多接口主机具有多个IP地址,每个接口都对应一个IP地址。

地址的分配是由 互联网络信息中心(InterNIC) 管理的,InterNIC只分配网络号,主机号的分配由系统管理员来负责。

3.域名系统
IP与域名之间的映射:DNS

4.封装
TCP传给IP的数据单元:TCP报文段(TCP segment);

UDP传给IP的数据单元:UDP数据报(UDP datagram);

IP传给网络接口层的数据单元:IP数据报(IP datagram);

以太网传输的比特流:帧(Frame),以太网帧的长度必须在46到1500字节之间。

数据进入协议栈时的封装过程:


由于TCP,UDP,ICMP,IGMP都要向IP传送数据,所以IP在首部加入一个长度为8bit的数值,称做协议域,1表示ICMP,2表示IGMP,6表示TCP,17表示UDP。

同样的,TCP和UDP用一个16bit的端口号来表示不同的应用程序。

网络接口分别要发送和接收IP,ARP,RARP数据,因此也必须在以太网的帧首部加入16bit的帧类型域。

5.分用
目的主机收到一个以太网数据帧时,数据开始在协议栈中由底往上升,并逐层检查报文首部的协议标识,以确定接收数据的上层协议,同时逐层去掉各协议的首部。

Demultiplexing:


××ICMP和IGMP与IP放在同一层是因为它们是IP协议的附属协议,但是ICMP和IGMP报文都被封装在IP数据报中。

6.Client-Server模型
重复型:一次只能为一台客户机提供服务;

并发型:启动新的服务器来处理请求,允许并发。

一般来说,TCP服务器是并发的,UDP服务器是重复的,但也有例外。

7.端口号
服务器一般使用知名端口号来识别,比如 telnet使用的是23, ftp使用的是21。

客户端通常对它使用的端口号不关心,只需要保证短时间内在本机上是唯一的就好。

大多数UNIX系统的文件/etc/services都包含了人们熟知的端口号,例子:

$ grep telnet /etc/services

$ grep domain /etc/services
1
2
3
1
2
3
保留端口号:介于1~1023之间,只有具有超级用户特权的进程蔡允许给它自己分配一个保留端口号。

8.标准化
有4个小组在负责Internet技术:

1.Internet协会 ISOC;

2.Internet体系结构委员会 IAB;

3.Internet工程专门小组 IETF;

4.Internet研究专门小组 IRIF。

9.RFC
所有关于Internet的正式标准都以RFC(Request for Comment)文档出版。

一些重要的RFC文档:

1.赋值RFC,列出了所有Internet协议中使用的数字和常数;

2.Internet正式协议标准,描述了各种Internet协议的标准化现状;

3.主机需求RFC;

4.路由器需求RFC。

10.标准的简单服务


当使用TCP和UDP提供相同的服务时,一般选择相同的端口号。

××为何它们都是奇数:因为这些端口号是从NCP(网络控制协议,TCP的前身)端口号派生出来的,而NCP是单工的,所以每个应用程序需要两个连接,需预留一对奇数和偶数端口号,而对于TCP和UDP,每个应用程序只需要一个端口号,所以就使用了NCP中的奇数。

11.互联网
internet: 用一个共同的协议族把多个网络连接在一起;

Internet:世界范围内通过TCP/IP互相通信的所有主机集合。

Internet是一个internet,但是internet不等于Internet。

12.应用编程接口
使用TCP/IP协议的应用程序通常采用两种应用程序接口:socket 和 TLI(Transport Layer Interface)。

13.总结
TCP/IP协议族分为4层:应用层,运输层,网络层,链路层。

运输层提供端到端服务,网络层提供点到点服务。

一个互联网是网络的网络,其基石是路由器,它们在IP层把网络连在一起。

在互联网上,每个接口都用IP地址来标识,域名系统DNS为主机名和IP地址之间提供动态的映射。

端口号被用来标识互相通信的应用程序,服务器使用知名端口号,客户使用临时设定的端口号。