1.2 分层:
网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如 TCP/IP,是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层协议系统。
1.3 TCP/IP的分层
- T C P和U D P是两种最为著名的运输层协议,二者都使用 I P作为网络层协议。
- 虽然T C P使用不可靠的I P服务,但它却提供一种可靠的运输层服务。
- U D P为应用程序发送和接收数据报。但是与T C P不同的是,U D P是不可靠的。
- I P是网络层上的主要协议,同时被 T C P和U D P使用
- I C M P是I P协议的附属协议。I P层用它来与其他主机或路由器交换错误报文和其他重要信息
- I G M P是I n t e r n e t组管理协议。它用来把一个U D P数据报多播到多个主机。
- A R P(地址解析协议)和R A R P(逆地址解析协议)是某些网络接口(如以太网和令牌环 网)使用的特殊协议,用来转换 I P层和网络接口层使用的地址。
1.4 互联网的地址
互联网上的每个接口必须有一个唯一的 I n t e r n e t地址(也称作I P地址)。
-
由于互联网上的每个接口必须有一个唯一的 I P地址,互联网络信息中心( Internet Network Information Centre,InterNIC)为接入互联网的网络分配I P地址。InterNIC只分配网络号。主机号的分配由系统管理员来负责。
-
有三类I P地址:单播地址(目的为单个主机)、广播地址(目的端为给定网络上的所有主机)以及多播地址(目的端为同一组内的所有主机)。
1.5 域名系统
在TCP/IP领域中,域名系统( DNS)是一个分布的数据库,由它来提供 I P地址和主机名之间的映射信息。任何应用程序都可以调用一个标准的库函数来查看给定名字的主机的 IP地址。类似地,系统还提供一个逆函数 — 给定主机的I P地址,查看它所对应的主机名。
1.6 封装
- 通过以太网传输的比特流称作帧(Frame )。
- I P和网络接口层之间传送的数据单元应该是分组( p a c k e t)。分组既可以是一个IP数据报,也可以是IP数据报的一个片(fragment)。
- I P必须在生成的I P首部中加入某种标识,以表明数据属于哪一层。为此, I P在首部中存入一个长度为 8 bit的数值,称作协议域。( 1表示为ICMP协议,2表示为IGMP协议,6表示为TCP协议,17表示为UDP协议)
- TCP和UDP都用一个16 bit的端口号来表示不同的应用程序。TCP和UDP把源端口号和目的端口号分别存入报文首部中。
- 网络接口分别要发送和接收 IP、ARP和RARP数据,为此,以太网的帧首部也有一个 16 bit的帧类型域。
1.7 分用
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用(Demultiplexing)
1.8 客户-服务器模型
可以将客户-服务器服务分为两种类型:重复型或并发型。 重复性: I1. 等待一个客户请求的到来。 I2. 处理客户请求。 I3. 发送响应给发送请求的客户。 I4. 返回I1步。 并发型: C1. 等待一个客户请求的到来。 C2. 启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新服务器对客户的全部请求进行处理。处理结束后,终止这个新服务器。 C3. 返回C1步。
- 一般来说,T C P服务器是并发的,而 U D P服务器是重复的,但也存在一些例外。
1.9 端口号
T C P和U D P采用16 bit的端口号来识别应用程序。大多数T C P / I P实现给临时端口分配 1 0 2 4~5 0 0 0之间的端口号。大于 5 0 0 0的端口号是为其他服务器预留的(I n t e r n e t上并不常用的服务)。
1.10 标准化过程
有四个小组在负责I n t e r n e t技术。
-
Internet协会(ISOC,Internet Society)
-
Internet体系结构委员会(IAB,Internet Architecture Board),IAB隶属于ISOC
-
Internet工程专门小组(IETF,Internet Engineering Task Force)
-
Internet研究专门小组(IRIF,Internet Research Task Force)
1.11 RFC
所有关于I n t e r n e t的正式标准都以 RFC(Request for Comment)文档出版。 重要的RFC文档 :
-
赋值R F C(Assigned Numbers RFC)
-
I n t e r n e t正式协议标准
-
主机需求R F C
-
路由器需求R F C
1.12 标准的简单服务
| 名字 | TCP端口号 | UDP端口号 | RFC | 描述 |
|---|---|---|---|---|
| echo | 7 | 7 | 862 | 服务器返回客户发送的所有内容 |
| discard | 9 | 9 | 863 | 服务器丢弃客户发送的所有内容 |
| daytime | 13 | 13 | 867 | 服务器以可读形式返回时间和日期 |
| chargen | 19 | 19 | 864 | 当客户发送一个数据报时,TCP服务器发送一串连续的字符流,直到客户中断连接。UDP服务器发送一个随机长度的数据报 |
| time | 37 | 37 | 868 | 服务器返回一个二进制形式的32bit数,表示从UTC时间1900年1月1日午夜至今的秒数 |
1.13 互联网
internet意思是用一个共同的协议族把多个网络连接在一起。而Internet指的是世界范围内通过TCP/IP互相通信的所有主机集合(超过100万台)。Internet是一个internet,但internet不等于Internet。
1.14 实现
既成事实标准的TCP/IP软件实现来自于位于伯克利的加利福尼亚大学的计算机系统研究小组。
1.15 应用编程接口
使用TCP/IP协议的应用程序通常采用两种应用编程接口(API):socket和TLI(运输层接口:Transport Layer Interface)。
习题
1.1 请计算最多有多少个A类、B类和C类网络号。
A类:2 7 = 128
B类:2 14 = 16,384
C类:2 21 = 2,097,152
1.3 获取一份主机需求 RFC拷贝[Braden 1989a] ,阅读有关应用于TCP/IP协议族每一层的稳健性原则。这个原则的参考对象是什么?
在协议的每一层,有一个通用的原则来使得 其应用可以在鲁棒性和互操作性方面带来巨大的好处:
“对输入自由,对输出保守(Be liberal in what you accept, and conservative in what you send)”
可以想象一种情况,如果一个协议规范定义了四个可能出现的错误代码,那么当第五个代码出现时,软件一定不能被破坏。未定义的代码可能会被记录,但不能导致失败。
1.4 获取一份最新的赋值RFC拷贝。“quote of the day”协议的有名端口号是什么?哪个 RFC 对该协议进行了定义?
| Service Name | Port Number | Transport Protocol | Description |
|---|---|---|---|
| qotd | 17 | tcp | Quote of the Day |
| qotd | 17 | udp | Quote of the Day |
查看该协议 RFC 865 对其进行了定义
1.5 如果你有一个接入TCP/IP互联网的主机帐号,它的主IP地址是多少?这台主机是否接入了Internet?它是多接口主机吗?
使用的动态IP,接入了互联网,不是多接口主机
1.6 获取一份RFC 1000的拷贝,了解RFC这个术语从何而来。
作者为了避免冒犯到任何人,基本的想法是任何人可以发表意见以及这不是官方的,为了强调这点,作者取名为 "Request for Comments(RFC)"。