学习《TCP/IP详解卷1:协议》

《TCP/IP详解卷1:协议》 Richard Stevens 

链路层
==========

在T C P / I P协议族中,链路层主要有三个目的:(1)为IP模块发送和接收IP数据报;( 2)为A R P模块发送A R P请求和接收A R P应答;(3)为RARP发送RARP请求和接收R A R P应答。T C P / I P支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网、令牌环网、F D D I(光纤分布式数据接口)及R S-2 3 2串行线路等。

以太网链路层帧格式(由低到高)(首部14字节)
--------------------------------------------

6 字节目的地址--6字节源地址--2字节类型(0800: IP, 0806: ARP, 8035: RARP)--46~1500字节数据--4字节CRC

No.     Time        Source                Destination           Protocol Info
2     0.183048    10.0.0.3              10.0.0.1              DNS      Standard query A
www.google.cn

Frame 2 (73 bytes on wire, 73 bytes captured)
Ethernet II, Src: Dell_61:85:24 (00:4f:56:61:43:24), Dst: Netgear_89:d5:1e (00:18:2d:39:d8:1e)
    Destination: Netgear_89:d5:1e (00:18:2d:39:d8:1e)
    Source: Dell_61:85:24 (00:4f:56:61:43:24)
    Type: IP (0x0800)

大多数的产品都支持环回接口( Loopback Interface),以允许运行在同一台主机上的客户程序和服务器程序通过T C P / I P进行通信。A类网络号1 2 7就是为环回接口预留的。根据惯例,大多数系统把I P地址1 2 7 . 0 . 0 . 1分配给这个接口,并命名为l o c a l h o s t。一个传给环回接口的I P数据报不能在任何网络上出现。


IP层
=======

IP首部格式(由低到高)20字节
-----------------------------
4位版本--4位首部长度--8位服务类型(TOS)--16位总长度(字节数)--16位标识--3位标志--13位片偏移--8位生存时间(TTL)--8位协议类型--16位首部检验和--32位源IP地址--32位目的IP地址

8位协议类型(1: ICMP,2: IGMP,6: TCP,17: UDP)。

Internet Protocol, Src: 10.0.0.3 (10.0.0.3), Dst: 10.0.0.1 (10.0.0.1)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 59
    Identification: 0x2a81 (10881)
    Flags: 0x00
        0... = Reserved bit: Not set
        .0.. = Don't fragment: Not set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 128
    Protocol: UDP (0x11)
    Header checksum: 0x0000 [incorrect, should be 0xfc2d]
        [Good: False]
        [Bad : True]
    Source: 10.0.0.3 (10.0.0.3)
    Destination: 10.0.0.1 (10.0.0.1)


ARP:地址解析协议
===================

分组格式
-------------
6字节以太网目的地址--6字节以太网源地址--2字节帧类型(为0806)--2字节硬件类型(1为以太网地址)--2字节协议类型(0800表示IP地址)--1字节硬件地址长度(6)--1字节协议地址长度(4)--6字节发送端以太网地址--4字节发送端IP地址--6字节目的以太网地址--4字节目的IP地址

14字节以太网首部 + 28字节ARP请求/应答

最开始目的端主机硬件地址为ff:ff:ff:ff:ff:ff广播地址。


ICMP:Internet控制报文协议
=============================
20字节IP首部--8位类型--8位代码--16位检验和--(其他不同类型和代码对应的内容)

不同类型的ICMP报文由类型字段和代码字段共同决定,分为查询报文和差错报文。可用于ICMP地址掩码请求与应答,时间戳请求与应答,端口不可达差错。

Ping程序
--------------
发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。

Traceroute程序
------------------------
使用ICMP报文和IP首部中的TTL字段。


UDP:用户数据报协议
=====================
20字节IP首部--8字节UDP首部--UPD数据

UDP首部格式
--------------------
16位源端口号--16位目的端口号--16位UDP长度--16位UDP检验和

User Datagram Protocol, Src Port: 49326 (49326), Dst Port: domain (53)
    Source port: 49326 (49326)
    Destination port: domain (53)
    Length: 39
    Checksum: 0x143c [incorrect, should be 0x3ba3 (maybe caused by "UDP checksum offload"?)]
        [Good Checksum: False]
        [Bad Checksum: True]

端口号表示发送进程和接受进程,TCP端口号与UDP端口号是互相独立的。


广播和多播
============
广播和多播仅应用于UDP。

对于以太网,当地址中最高字节的最低位设置为1时,表示该地址是一个多播地址。

受限的广播地址是255.255.255.255,该地址用于主机配置过程中IP数据报的目的地址,任何情况下路由器都不转发目的地址为受限的广播地址的数据包,这样的数据仅出现在本地网络中。

多播地址范围为:224.0.0.0 到 239.255.255.255。


IGMP:Internet组管理协议
===============================
用于支持主机和路由器进行多播的协议。IP层的一部分:

20字节IP首部--4位IGMP版本--4位IGMP类型--8位未用--16位检验和--32位组地址

多播路由器使用IGMP报文来记录与该路由器相连网络中组成员的变化情况,使用规则有:
1. 当第一个进程加入一个组时,主机发送一个IGMP报告。
2. 进程离开一个组时,主机不发送IGMP报告。
3. 多播路由器定时发送IGMP查询了解是否还有任何主机包含有属于多播组的进程。
4. 主机通过发送IGMP报告来响应一个IGMP查询,对每个至少还包含有一个进程的组局要发回IGMP报告。

使用这些查询和报告报文,多播路由器对每个接口保持一个表,表中记录接口上至少还包含一个主机的多播组。

 

DNS:域名系统
=================
域名系统( D N S)是一种用于T C P / I P应用程序的分布式数据库,它提供主机名字和I P地址之间的转换及有关电子邮件的选路信息.

从应用的角度上看,对D N S的访问是通过一个地址解析器( r e s o l v e r)来完成的。在U n i x主机中,该解析器主要是通过两个库函数g e t h o s t b y n a m e(3) 和g e t h o s t b y a d d r( 3 )来访问的,它们在编译应用程序时与应用程序连接在一起。前者接收主机名字返回I P地址,而后者接收I P地址来寻找主机名字。解析器通过一个或多个名字服务器来完成这种相互转换。

解析器通常是应用程序的一部分。解析器并不像T C P / I P协议那样是操作系统的内核。

DNS的报文格式
----------------------
2字节标识--2字节标志--2字节问题数--2字节资源记录数--2字节授权资源记录数--2字节额外资源记录数
后面还包括记录数可变得:查询问题,回答,授权,额外信息。

Domain Name System (query)
    [Response In: 3]
    Transaction ID: 0xcb72
    Flags: 0x0100 (Standard query)
        0... .... .... .... = Response: Message is a query
        .000 0... .... .... = Opcode: Standard query (0)
        .... ..0. .... .... = Truncated: Message is not truncated
        .... ...1 .... .... = Recursion desired: Do query recursively
        .... .... .0.. .... = Z: reserved (0)
        .... .... ...0 .... = Non-authenticated data OK: Non-authenticated data is unacceptable
    Questions: 1
    Answer RRs: 0
    Authority RRs: 0
    Additional RRs: 0
    Queries
       
www.google.cn: type A, class IN
            Name:
www.google.cn
            Type: A (Host address)
            Class: IN (0x0001)

名字解析器是客户程序的一部分,并且在Te l n e t客户程序与d a y t i m e服务器建立T C P连接之前,名字解析器就能通过名字服务器获取I P地址。最多可说明3个名字服务器行来提供足够的后备以防名字服务器故障或不可达。

注意到D N S名字服务器使用的熟知端口号无论对U D P还是T C P都是5 3。这意味着D N S均支持U D P和T C P访问。既然D N S主要使用U D P,无论是名字解析器还是名字服务器都必须自己处理超时和重传。此外,不像其他的使用U D P的I n t e r n e t应用(T F T P、B O O T P和S N M P),大部分操作集中在局域网上,D N S查询和响应通常经过广域网。分组丢失率和往返时间的不确定性在广域网上比局域网上更大。这样对于D N S客户程序,一个好的重传和超时程序就显得更重要了。


TFTP:简单文件传送协议
========================
Trivial Fiel Transfer Protocol,最初用于引导无盘系统,为了保持简单和短小,TFTP使用UDP。


BOOTP:引导程序协议
======================
BOOTP请求和应答均被封装在UDP数据报中。

20字节IP首部--8字节UDP首部--300字节BOOTP请求/应答

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值