您的位置:首页 > 理论基础 > 计算机网络

网络基础知识(一):网络分层、UDP协议

2016-02-29 08:29 656 查看
TCP/IP四层:

应用层、运输层、网络层、链路层

应用层是用户进程,而其他三层是内核工作

应用层协议(TCP):

FTP(21) 文件传输协议

Telent(23) 远程登陆

SSH(22) 安全远程登陆协议

SMTP 简单邮件传送协议

应用层协议(UDP):

DNS(53) 域名解析协议

BOOTP(68) 引导程序协议

TFTP(69) 简单文件传送协议

SNMP 简单网络管理协议

传输层协议: TCP/UDP

网络层协议: IP/ICMP/IGMP

ICMP 用于交换错误报文,Ping和Traceroute使用ICMP

IGMP 组管理协议,用于UDP的跨路由器组播

ICMP/IGMP都被封装在IP数据报中(类似TCP/UDP一样)

链路层协议: ARP/RARP

IP:

网络层提供的是逐跳协议,不可靠服务,TCP是在不可靠的IP层上提供可靠的运输层

IP的错误处理方法:丢弃该数据报,并发送ICMP消息报给源端

互联网地址分类:

类型 开头 网络号(bit) 主机号(bit)

A 0 7 24

B 10 14 16

C 110 21 8

D 1110 多播组号共:28位

E 11110 (保留,共27位)

广播地址:

网络号和主机号全为1:受限的广播地址,不能被路由器转发

有网络号,主机号为全1的:如果有固定子网号,则向该子网广播,否则子网号为全1的,向该网络的所有子网广播。

报头大小:

IP 20字节

TCP 20字节(可扩展)

UDP 8字节

ARP 28字节

链路层有三个目的:

IP数据报的发送和接受、ARP的请求和应答、RARP的请求和应答。

SLIP:串行线路IP,串行线路的速率较低,一般用于小的TCP分组交换

localhost的IP地址为127.0.0.1,是A类地址,没有进行子网划分。

网络字节序:

是大端存储,即高位字节存在地位地址中,是由于TCP/IP首部中所有的二进制整数在网络中传输都以这种次序,而我们PC机一般都是小端存储。

IP数据报大小:

一般链路层都会对IP数据报进行分片,主机一般不接收超过576字节的数据报。由于TCP是流传输,因此无影响,而UDP一般都限制用户的数据报长度为512字节。

注意:NFS文件系统允许超过8192字节的IP数据报

IP路由选路过程:

1)搜索与目的IP地址完全相同的表目;

2)搜索目的网络号匹配的表目;

3)搜索默认表目;

4)以上都没有,则向原地址发送“主机不可达”或“网络不可达”的ICMP报文

注意: 1)IP的逐跳协议,为一个网络指定一个路由器即可,这样可以大大减少路由表的大小,比如整个Internet上的路由器只有几千个表目;

2)整个IP路由的过程当中,目的IP地址始终是不变的,但是每一跳的链路层的目的MAC地址始终都指向下一跳的链路层地址(且一般都是默认的)。如果是跨路由器的,那么下一跳的MAC地址是由该网络的路由器告知的。

大多数的子网例子都是B类地址,一个包含30个子网的B类地址比30个C类地址的好处是:减小路由表的规模。因为子网对于路由器外是透明的,对于网络内部是不透明的。

MAC地址是48bit,IP地址是32bit

使用 arp -a 查看ARP告诉缓存,每一项的生存时间是20分钟

以太网最小长度:

60字节,而28字节的ARP+14字节的以太网首部=42字节,因此要填充至60字节。

TCP中client的connect的连接超时时间一般为:75s。这个时间其实是有ARP的请求时间决定的。

重点:如何减小connect连接超时时间?

问题分析:因为connect调用阻塞时,我们即时退出应用程序,也要75s后才能继续使用,说明内部超时是在内核中工作的。我们应该在connect之前先将socket设置为非阻塞的,然后再调用connect,这时,无论是否成功都会立即返回,我们可以通过select的返回值判断是否连接成功。如果socket是可读可写的,说明连接失败;如果socket是可写的,说明连接成功。注意,在连接成功后要将socket重新设置为阻塞的,为什么?

RARP作用: 由MAC地址获得IP地址。

有盘系统一般在系统启动时,从磁盘上的配置文件中读取IP地址;而无盘系统就要通过RARP了。

BOOTP: 解决了RARP是链路层协议,不能跨路由的问题。

通常与TFTP协同工作,固化在无盘系统只读存储器中。

一个无盘系统需要在只读存储器中实现下列协议:BOOTP、TFTP、UDP、IP和一个局域网驱动程序

ICMP:

报头大小是不固定的,一个“UDP端口不可达”的ICMP报文大小是70字节:

以太网头(14) + IP头(20) + ICMP头(8) + 产生差错(不可达)的IP头(20) + UDP头(8) = 70字节

ICMP重定向报文可以更新路由表

Traceroute命令用于查看主机到另一主机的路由,而Ping命令也有这个功能,但是Ping命令只能存9个IP地址。

Traceroute和Ping区别:

Ping每隔1s发送一个包,不管是否接受到回复;

Traceroute直到收到应答或超时才发下一个。

TTL一般为255,数据报每经过一个路由器就减1,直至为0时丢弃。TTL的存在为了防止数据报无休止的在网络中。

Traceroute工作流程:首先发送TTL为1的数据报,第一个路由器将TTL减1,丢弃该数据报,然后回送超时ICMP报文,这样就获得了路径上第一个路由器地址。然后发送TTL为2、3…依次获得路径地址。而如何判断到达主机呢?由于到达主机后,不会回送超时ICMP报文,所以我们发送的源数据报中要使用一个不可能的值作为UDP端口,这样当目的主机接收到数据报后就会回送一个“端口不可达”错误,这样我们就知道到达目的主机了。

IP选路可以分为静态选路和动态选路。

静态选路

1)通过route命令增加表项(通常从系统自引导程序文件中)

2)通过ICMP重定向生成表项(通常在默认方式出错的情况下)

动态选路:

只有在 1)网络很小

2)与其他网络只有单点连接

3)没有多余路由

三个条件都满足时才用静态选路,否则都是动态选路,所以显然动态选路更常用。

动态选路协议: 1)用于同一自治系统路由器间的内部网关协议(IGP)

a)RIP 易受攻击

b)OSPF 客服了RIP的所有限制,广泛使用

2)用于不同自治系统路由器间的外部网关协议(EGP)

BGP 使用TCP作为传输层协议

3)无类型域间选路(CIDR):防止路由表膨胀

UDP首部8字节:

16位源端口、16位目的端口、16位UDP长度、16位检验和

TCP发生检验和差错的概率比UDP高得多,因为TCP一般用于远程连接,而UDP一般为本地通信。

UDP分片除了最后一片以外都是8的整数倍大小。

混杂模式:多数接口都为混杂模式,可以接收每个帧的复制,tcpdump就是这种模式。

广播的问题:增加了对广播不感兴趣主机的处理负荷。

解决: 使用组播

组播: 由于多播都是D类地址,所以开头4位为1110,且多播组号中的高5位在映射过程中被忽略,例如:

224.128.64.32和224.0.64.32被映射为同一以太网地址(他们的高9位相同)

多播目前还不能在广域网中进行。

广播分组长度最大为1472

原因:以太网MTU为1500,减去20字节IP头和8字节UDP头为1472,如果是1473,由于大于MTU,会被链路层分片,而广播地址是不允许被分片的,所以会返回“Message too long”错误。

DNS指针查询:给定IP地址,返回域名

为了减少DNS通信量,所有的名字服务器都使用高速缓存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: