tcp和ip总结文档格式.docx
- 文档编号:22834858
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:53
- 大小:53.19KB
tcp和ip总结文档格式.docx
《tcp和ip总结文档格式.docx》由会员分享,可在线阅读,更多相关《tcp和ip总结文档格式.docx(53页珍藏版)》请在冰豆网上搜索。
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'
'
t
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
==========================================================================
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
请求应答1
发送者硬件地址6
发送者IP地址
4
目的硬件地址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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- tcp ip 总结