王逸清对《TCP/IP详解 卷1:协议》的笔记(4)

TCP/IP详解 卷1:协议
  • 书名: TCP/IP详解 卷1:协议
  • 作者: W.Richard Stevens
  • 页数: 423
  • 出版社: 机械工业出版社
  • 出版年: 2000-4-1
  • 第1页 概述

    1. 链路层、网络层、运输层有操作系统内核实现,应用层由应用程序实现;前者实现通信的细节,后者实现应用程序细节 2. 链路层对应操作系统的设备驱动程序和网卡 3.TCP提供面向连接的可靠的服务,自身有保证可靠传输的机制;UDP只负责把数据报由一台主机发送到另一台主机,可靠传输由应用层来保证;二者保证传输可靠的位置不同 4.为什么要划分运输层和网络层?网络层的功能是把不同的物理网络连接起来,主要工作在路由器上/中间系统上,提供的是hop-to-hop的通信,而运输层提供的是端到端end to end的通信,网络层提供不可靠的服务,而TCP提供面向连接的可靠传输 5.多个网络是通过路由器连接起来的,历史上曾经使用网关这一术语描述连接不同网络的设备,现在的网关往往是指连接两种不同协议族的一个进程,即应用层网关 6.链路层包括ARP和RARP,所以链路层的frame头包含一个16bit的类型域描述网络层也就是链路层封装的是什么类型的数据; IP层之上可能是运输层的TCP或者UDP,也可能是ICMP或者IGMP报文,因此IP头有一个8bit的域表示IP报文封装的内容;运输层向上封装的是应用层数据,使用端口号标识不同的应用,所以运输层数据段有16bit的目的端口号和源端口号 7.周知口(well konwn port)一般使用奇数端口,这是历史遗留问题,比如ftp用21,telnet用23,这是因为运输层协议tcp的前身NCP是单工的,因此一个链路需要两个连接,使用两个端口号;后来的TCP支持全双工,所以只用一个端口号就可以了

    2012-09-25 22:43:48 1回应
  • 第16页 链路层

    1 链路层是位于网络层以下为IP层服务的,除了封装和收发IP数据报之外,链路层还为ARP和RARP协议即32bitIP地址(IPv4)与48bit设备地址(网卡的唯一标识)提供转换服务。TCP/IP之所以能成功,是因为它可以和多种链路层协议一起工作;这决定了它适用于各种硬件,是一种通用的协议。 2. 以太网封装(Ethernet)和802封装 CSMA/CD即带冲突检测的载波侦听多路接入解决了多个主机共用一条线路的介入问题,这是一个巨大进步,由企业制定的以太网帧格式是一种比较简单的帧格式,即6字节源地址+6字节目的地址+2字节类型地址+46-1500字节IP数据报+4字节CRC,而制定较晚的802.2和802.3,使用了CSMA/CD机制,但是却定义了一种新的不同于以太网帧格式的802帧格式,具体的不同是2字节的类型数据段被2字节的长度数据代替,IP数据报位置的头部,有3字节的LLC和5字节的SNAP,SNAP由3字节组织码和2字节类型码组成,这样,802帧的数据报长度就只能是38-1492字节了,比以太网少了8个字节; 悲剧的是RFC主机需求文档主机接口必须支持以太网帧,应该支持802帧和以太网帧,同时可能需要支持以太网帧。也就是说出现在线路上的可能是两种帧格式或者其混合流;必须以某种方式区分这两种帧。 最后的解决方法是,2字节的类型bit 或 长度比特取值范围是不同的;IEEE 802帧的长度比特定义的是2字节长度字段之后的IP数据报长度,不含CRC,取值在0x0000-0x05dc,即0-1500字节;以太网帧用于表示payload类型的值,不可以取上述范围内的值。例如,类型之0800表示ip数据报,0835表示ARP,0836表示RARP 悲剧的是,IEEE802帧扩充的8个字节中的前六个字节,即3字节LLC和5字节SNAP中的前三个字节,一般固定取值。这大约为下文的压缩帧头埋下伏笔。 显然,这应该是企业之间竞争的结果。不然,以太网帧已经足够使用了。

    2012-09-26 21:14:54 2回应
  • 第18页 链路层-PPP协议

    1. PPP是针对SLIP的三个缺点设计的,它也是运行在串行物理介质上的,针对无类型字段和无CRC校验两个缺点,PPP直接分别添加了2字节协议类别码和2字节CRC; PPP的帧头3字节,帧尾1字节;但是通过两端协商可以省掉这四个字节,而且协议字节可以由2字节减少到1字节,因为0021表示IP,C021表示LCP,8021表示NCP,实际上传00/C0/80就可以了,所以事实上PPP只比SLIP多了3个字节;但是功能大大丰富,因为NCP网络控制协议的引入,可以支持动态地址分配,这大大方便了用户。 2 PPP是为IP或者LCP或者NCP服务的 LCP是建立、配置及测试数据链路的链路控制协议; NCP是用于针对不同网络层协议的网络控制协议;一个重要功能是动态地址分配 这两个协议由不同的RFC文档描述,详细参见书籍 3. PPP协议中的转义现象更广泛,不仅帧标识符、转义符要转义,IP数据报中小于0x20的字节都要转义,这是因为这些字节被用作特殊含义的控制命令 4. PPPoE(英语:Point-to-Point Protocol over Ethernet),以太网上的点对点协议,是将点对点协议(PPP)封装在以太网(Ethernet)框架中的一种网络隧道协议。由于协议中集成了PPP协议,所以实现了传统以太网不能提供的身份验证、加密以及压缩等功能,也可用于缆线调制解调器(cable modem)和数字用户线路(DSL)等以以太网协议向用户提供接入服务的协议体系。 ------------------------------- TCP | UDP ------------------------------- IP | IPv6 ------------------------------ ppp ------------------------------ PPPoE ------------------------------ Ethernet -----------------------------

    2012-09-26 21:58:14 回应
  • 第20页 链路层-环回接口loopback

    loopback接收4类网络层收到的数据:目的IP地址是多播或组播地址的IP包、目的IP地址与本地主机IP地址相同、目的IP地址是loopback的 内核的IP数据报发送函数,首先判断要发送的数据报是loopback口还是以太网地址,分别发送到loopback驱动程序和以太网驱动程序,后者会判断是否是多播、组播或者与本机IP相同,满足这四个条件的IP包会转发给内核的接收函数。 loopback是一个伪链路层 至此,本章讲了IEEE 802、以太网、SLIP、PPP和loopback5种链路层

    2012-09-26 22:21:56 回应