tcp和ip总结文档格式.docx

上传人:b****8 文档编号:22834858 上传时间:2023-02-05 格式:DOCX 页数:53 大小:53.19KB
下载 相关 举报
tcp和ip总结文档格式.docx_第1页
第1页 / 共53页
tcp和ip总结文档格式.docx_第2页
第2页 / 共53页
tcp和ip总结文档格式.docx_第3页
第3页 / 共53页
tcp和ip总结文档格式.docx_第4页
第4页 / 共53页
tcp和ip总结文档格式.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

tcp和ip总结文档格式.docx

《tcp和ip总结文档格式.docx》由会员分享,可在线阅读,更多相关《tcp和ip总结文档格式.docx(53页珍藏版)》请在冰豆网上搜索。

tcp和ip总结文档格式.docx

1、IP地址分类:

IP地址分位五类:

A类、B类、C类、D类、E类,其中A类、B类和C类为基本类,D类用于多播,E类属于保留类,现在不用。

它们的格式如下(其中*代表网络号):

A类:

0******* 

XXXXXXXX 

XXXXXXXX

B类:

10****** 

******** 

C类:

110***** 

D类:

1110**** 

E类:

1111**** 

这样,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-247.255.255.266

◆ 

几个特殊IP地址

网络地址:

IP地址中主机地址全为0的地址,如128.211.0.0。

广播地址:

IP地址中主机地址全为1的地址,如128.211.255.255。

环回地址:

127.0.0.1,主要用于测试。

2、子网掩码:

现在的主机都要求支持子网掩码,不再把IP地址看成为由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号。

例如一个B类地址(140.252),在剩下的16位中,8位用于子网号,8位用于主机号,这样就允许254个子网,每个子网就可以有254台主机。

为了确定多少位用于子网号,多少位用于主机号,这就要用到子网掩码了。

其中值为1的位留给网络号和子网号,为0的位留给主机号。

三、 

数据包的封装和分用

1、 

封装:

应用程序→TCP/UDP→IP→以太网

2、 

分用:

以太网←IP←TCP/UDP←应用程序 

  

以太网

首部

(14) 

IP首部

(20) 

TCP首

部(20) 

应用数据 

尾部(4) 

四、 

IP首部:

IP协议是TCP/IP协议族中最核心的协议,所有的TCP、UDP、ICMP和IGMP数据都以IP数据报格式传输。

IP传输的两个特点:

不可靠和无连接。

IP协议并不保证数据报能成功地到达目的地,也不维护后续数据报的状态信息。

必须由上层协议处理。

4位

版本 

4位首

部长度 

8位服务类型 

16位总长度(字节数) 

16位标识 

3位

标志 

13位片偏移 

8位TTL 

8位协议 

16位首部检验和 

32位源IP地址 

32位目的IP地址 

IP首部定义:

typedef 

struct 

ip_hdr

{

unsigned 

char 

ip_verlen;

// 

4-bit 

版本号

首部长度 

(in 

32-bit 

words)

ip_tos;

IP 

服务类型

short 

ip_totallength;

总长度(字节数)

//第一个32位

ip_id;

标识

ip_offset;

//3位标志,13位分片偏移,

#define 

IP_DF 

0x4000 

//0x4000 

don'

'

fragment 

flag

IP_MF 

0x2000 

//0x2000 

more 

IP_OFFMASK 

0x1fff 

//0x1fff 

mask 

for 

fragmenting 

bits

//第二个32位

ip_ttl;

生存时间

ip_protocol;

上层协议

ip_checksum;

首部检验和

//第三个32位

int 

ip_srcaddr;

源IP地址

//第四个32位

ip_destaddr;

目的IP地址

//第五个32位

ip,IPV4_HDR, 

*PIPV4_HDR, 

FAR 

LPIPV4_HDR;

说明:

ip_verlen前4位目前为4,表示为IPv4,后4位为5,表示首部长度为5X4=20个字节。

ip_tos为服务类型(type 

of 

service),aaabbbbc,aaa为优先权子字段,现在已被忽略,bbbb为TOS子字段,代表:

最小时延、最大吞吐量、最高可靠性和最小费用,c未使用必须为0。

如果bbbb均为0,则表示为一般服务。

目前大多数TCP/IP实现都不支持TOS特性。

ip_totallength为IP数据报的总长度,以字节为单位,因此理论最大值为65535,但实际是不可能的。

ip_id为唯一标识主机发送的每一个数据报,通常每发一份它的值就会加1。

ip_off前3位标志abc,a为保留,必须为0,b为不分片标志,c为更多分片标志。

ip_off后13位为分片位置,以8字节为单位计算。

因此,除最后一个分片外,其他每个分片都希望是一个8字节倍数的数据,从而使后面的分片从8字节边界开始。

ip_ttl为IP报的生存周期,每经过一个路由器就减1,如果该字段为0,则该数据报被丢弃。

ip_protocol:

1=ICMP,2=IGMP,3=TCP,17=UDP

ip_checksum为数据报的首部检验和。

计算方法如下:

USHORT 

checksum(ip 

*ip, 

size) 

long 

cksum=0;

while 

(size 

>

1) 

cksum 

+= 

((USHORT*)ip 

)++;

size 

-= 

sizeof(USHORT);

}

if 

(size) 

+=(USHORT) 

*(UCHAR*)ip;

(cksum 

16) 

&

0xffff);

16);

return 

(USHORT)(~cksum);

ICMP、IGMP、TCP和UDP协议也采用相同的检验和算法。

五、 

端口号:

TCP/UDP都使用一个16bit地端口号来表示不同地程序。

知名端口:

一般介于1~255之间,例如:

FTP的TCP端口号是21。

临时端口,由于客户端对端口号一般并不关心,只需保证唯一就可以了,所以系统一般分配临时端口号。

六、 

链路层:

(以以太网为例,地址为48bit)

链路层的功能:

为IP模块发送和接收IP数据报

为ARP模块发送ARP请求和接收ARP应答

为RARP模块发送RARP请求和接收RARP应答

以太网的封装,以太网IP数据报的封装在RFC 

894中定义的:

目的地址

(6) 

源地址

类型

(2) 

数据(46-1500),包括IP、ARP、RARP 

CRC

(4) 

对于ARP和RARP请求/应答数据报大小只有28字节,为了达到46字节的最小长度,必须在后面添加18字节的填充字节。

七、 

一般把127.0.0.1分配给这个接口,并命名为localhost,一个发给环回接口的IP数据报不能在任何网络上出现。

传给环回地址的任何数据均作为IP输入。

传给广播地址和多播地址的数据报复制一份传给环回接口,然后送到以太网上。

3、 

任何传给该主机IP地址的数据均送到环回接口。

八、 

最大传输单元MTU:

以太网对数据帧的长度都有限制,其最大值为1500。

链路层的这个特性叫做最大传输单元MTU。

如果一个IP数据报比MTU大,那IP层就必须进行分片,把数据报分为若干片。

如果两台主机间的通信要通过多个网络时,那么每个网络的链路层可能有不同的MTU。

重要的不是两台主机所在网络的MTU,重要的是两台主机路径中的最小MTU,它被成为路径MTU。

九、 

IP路由选择

如果目的主机与源主机直接相连或都在一个共享网络上,那么IP数据报就直接送到目的主机上。

否则主机就会把数据报发送到一个默认的路由器上,由该路由器来转发该数据报。

IP层在内存中有一个路由表,当收到一份数据报并进行发送时,它都要对该表搜索一次。

当数据报来自某个网络接口时,IP首先检查目的IP地址是否为本机的IP地址之一或者IP广播地址。

如果是这样,数据报就被送到由IP首部协议字段所指定的协议模块进行处理,否则如果IP层被设置为路由器的功能,那么就对数据报进行转发,否则丢弃数据报。

我们来看看路由表是什么:

C:

\WINNT\system32>

route 

PRINT

==========================================================================

Interface 

List

0x1 

........................... 

MS 

TCP 

Loopback 

interface

0x1000003 

...00 

08 

02 

ca 

2d 

11 

...... 

Intel 

8255x-based 

Integrated 

Fast 

Ethernet

Active 

Routes:

Network 

Destination 

Netmask 

Gateway 

Metric

目的地 

掩码 

网关 

主机

0.0.0.0 

192.1.8.26 

192.1.8.84 

1

127.0.0.0 

255.0.0.0 

127.0.0.1 

192.1.8.0 

255.255.255.0 

255.255.255.255 

192.1.8.255 

224.0.0.0 

Default 

Gateway:

192.1.8.26

==================================================================

IP路由的主要功能:

搜索路由表,寻找与目的IP地址完全匹配的表目,如果找到,则将数据报发给该表目指定的下一站路由器或直接连接的网络接口。

搜索路由表,寻找能与目的网络号相匹配的表目,如果找到,则将数据报发给该表目指定的下一站路由器或直接连接的网络接口。

ARP:

地址解析协议

先看:

\document. 

and 

Settings\xiaoj>

arp 

-a

Interface:

on 

0x1000003

Internet 

Address 

Physical 

Type

192.1.8.12 

00-0b-cd-03-c4-27 

dynamic

192.1.8.15 

00-0d-9d-93-09-f5 

192.1.8.18 

00-e0-18-c1-86-3d 

00-80-2d-78-4f-81 

192.1.8.33 

00-0b-cd-0f-a4-c5 

192.1.8.38 

00-30-6e-36-5f-99 

192.1.8.86 

00-0b-cd-b8-0c-ae 

192.1.8.247 

00-50-ba-e5-20-af 

192.1.8.248 

00-0d-56-19-ba-56 

第一列显示的是主机的IP地址,第二列就是主机的网卡MAC地址。

ARP协议就是提供IP地址到对应的硬件地址提供动态映射。

这个过程一般是系统自动完成的。

ARP发送一份ARP请求给以太网上的主机,该请求中包含目的主机的IP地址,其意思是“如果你是这个IP的拥有者,请回答你的硬件地址”。

当目的主机的ARP层收到这份广播报文时,识别出这是发送端在询问它的IP地址,于是就会发送一个ARP应答,这个ARP应答包括IP地址及对应的硬件地址。

ARP分组格式 

以太网目的地址6 

以太网源地址6 

帧类型2 

硬件类型2 

协议类型2 

硬件地址长度

协议地址长度1 

请求应答1 

发送者硬件地址6 

发送者IP地址

目的硬件地址6 

目的IP地址4 

先看定义:

//ARP首部

arphdr(

u_short 

ar_hrd;

//硬件类型

ar_pro;

//协议类型

u_char 

ar_hln;

//硬件地址长度

ar_pln;

//协议地址长度

ar_op;

请求还是应答

arp_sha[6];

//发送者硬件地址

arp_spa[4];

//发送者IP地址

arp_tha[6];

//目的硬件地址

arp_tpa[4];

//目的IP地址

arp_zero[18];

//填充字段

};

◆以太网目的地址全为1的特殊地址为广播地址。

以太网帧类型ARP对应的值为0x0806。

硬件类型表示硬件地址的类型,以太网为1。

协议类型字段表示要映射的协议地址类型,IP地址对应的值为0x0800。

硬件地址长度:

以太网为6。

协议地址长度:

以太网为4,即IP地址长度。

操作字段:

ARP请求=1,ARP应答=2,RARP请求=3,RARP应答=4。

当系统收到一份目的端为本机的ARP请求报文时,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最后把它发送出去。

ARP代理:

如果ARP请求是从一个网络的主机发往另一个网络的主机,那么连接这两个网络的路由器可以回答该请求,这个过程称为ARP代理,这样可以欺骗发起ARP请求的发送端,使它误以为路由器就是目的主机。

免费ARP

指主机启动时发送ARP查找自己的IP地址,主要作用:

查找网络上有没有相同的IP地址。

更新ARP缓存。

RARP协议:

逆地址解析协议,这里就不详细介绍了。

RARP协议一般用于无盘工作站,根据硬件地址查找IP地址。

RARP分组格式与ARP分组格式相同。

ICMP协议:

Internet控制报文协议:

ICMP经常被认为是IP层的一个组成部分,它传递差错报文以及其他需要注意的事项。

ICMP报文通常被IP层或更高层协议(TCP或UDP)使用。

ICMP报文是在IP数据报内部被传输的。

ICMP报文包差错报文和查询报文。

报文格式如下:

8位类型 

8位代码 

16位检验和 

不同类型和代码有不同的内容 

类型字段可以有15个不同的值(0、3-5、8-18)。

某些报文还使用代码字段来进一步描述不同的条件。

检验和字段覆盖整个ICMP报文,与IP首部检验和算法是一样的。

以下情况不会产生ICMP差错报文:

ICMP差错报文

目的地址为广播地址或者多播地址

作为链路层的数据报

不是IP分片的第一片

源地址不是单个主机的数据报,也即源地址不能为0地址、环回地址、广播地址或多播地址

ICMP地址掩码请求与应答:

ICMP地址掩码请求用于无盘系统在引导过程中获取自己的子网掩码,系统广播它的ICMP请求报文。

ICMP地址掩码请求和应答报文格式如下:

类型(17或18) 

代码(0) 

检验和 

标识符 

序列号 

32位子网掩码 

ICMP报文中的标识符和序列号由发送端任意选择设定,这些值在应答中将被返回。

icmp_mask{

icmp_type;

//类型

icmp_code;

//代码

icmp_checksum;

//检验和

icmp_id;

//标识符

icmp_sequence;

//序列号

icmp_mask;

//32位子网掩码

RFC规定,除非是地址掩码的授权代理,否则不能发送地址掩码应答。

向本机IP地址和环回地址发送地址掩码请求结果是一样的。

ICMP时间戳请求与应答:

ICMP时间戳请求允许系统向另一个系统查询当前时间,返回的是自午夜开始记算的毫秒数。

调用者必须通过其他方法获取当前时间。

ICMP时间戳请求与应答报文格式如下:

类型(13或14) 

发起时间戳 

接收时间戳 

传送时间戳 

请求端填写发起时间戳,然后发送报文。

应答系统收到报文填写接收时间戳,发送应答时填写发送时间戳。

实际上,大多数实现将后两个字段一般设置为一样的。

icmp_time{

icmp_request_time;

//发起时间戳

icmp_receive_time;

//接收时间戳

icmp_send_time;

//传送时间戳

ICMP端口不可达差错

主机如果收到一份UDP数据报而目的端口与某个正在使用的进程,那么UDP返回一个ICMP不可达报文。

类型3 

代码(0-15) 

保留(必须为0) 

IP首部+原始IP数据报中数据的前8个字节 

当代码为4时,路径MTU发现机制允许路由器把外出接口的MTU填在这个32bit的低16bit中。

icmp_unreach{

icmp_zero;

//保留

icmp_ip[28];

//IP首部+原始IP数据报中前8个字节,也就是地址信息

一、Ping程序:

  先看:

//ping 

ping 

svr00804 

Pinging 

[192.1.8.12] 

with 

32 

bytes 

data:

Reply 

from 

192.1.8.12:

b

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1