网络通信相关基础知识的认识(一篇读懂网络相关内容)

TCP/IP协议:就是的网络中的计算机与计算机之间进行数据通信的一种约定方式,要不然谁知道你是要发关给我的呀。


端口:一个应用程序会占有系统一个端口来进行对网卡的访问,端口号的有限的(65535),部分已经被固定功能用了,一个端口号只能分配给一个应用程序用。


socket:是对TCP/IP进行封装的网络通信API,socket是源IP+端品和目标IP+端口惟一确定的,所以系统可以有很多的socket(与端口号不一样)。


路由器也有自己的IP(内网第一个保留作为它的IP),和MAC地址。


NAT工作流程(Network Address Translation)
NAT的作用是把内网IP+端口改为外网IP+端口(这人端口号也是要申请的,用于区分不同主机用)用的,
NAT会在内部建立一张内网IP+端口和外网IP+端口的映射表,使后面服务器返回来的数据是给那个内部
主机的作准备。

1.主机用内网IP+端口号申请访问外网服务器,数据包发送给NAT(路由器)。
2.NAT解析是发送到外网的,向NAT申请一个端口号,并建立内网IP+端口和外网IP+端口的映射表条目。
并把数据包中的源IP和端口号更改为外网IP+端口,再形成新的数据包,发送到外网要访问的服务器上。
3.服务器得到请求,将数据打包发送回NAT。
4.NAT接收到数据包,解析对比内网IP+端口和外网IP+端口的映射表中的内容,再把外网IP+端口改为
内网IP+端口,再发送到原来请求的机器,这样原来请求的机器就接收到访问外网的数据了。

参考原文:http://blog.sina.com.cn/s/blog_9d386e13010175rq.html


以太网帧格式













目标地址:6个字节,单播、多播或者广播。单播地址也叫个人、物理、硬件或MAC地址。广播地址全为1,0xFF FF FF FF。


MAC地址表,路由器保存的MAC与接口的关系表。
ARP缓存表,计算机保存的IP、MAC关系表。
路由表:路由器保存的网段与接口的关系表。



ARP协议的工作流程
主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;

主机A要与主机B通信工作流程:
1.A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址(IP、MAC关系)。
2.A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址,从而将ARP请求帧广播到本地网络上的所有主机,
源主机A的IP地址和MAC地址+目标IP和目标MAC(是12个F)(这个是广播包里有内容),本地网络上的每台主机都
接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它
将丢弃ARP请求。
3.主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
4.主机B将包含其MAC地址的ARP回复消息直接发送回主机A。(因为有了目标IP和目标MAC,所以可以直接发送了)
5.当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存
期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

网卡接收到数据包时,如果MAC地址不是给自己的就是丢掉,所以跨网络时ARP请求不再是以广播的形式进行得到,而是
要以数据报的形式由路由器发到了目标,目标之后返回ARP请求回应来处理的。

跨网络时
1.发现不在同一网段,封装成ARP请求数据包发送给路由器(如果不知路由器MAC则进行ARP请求得到,它们在同一网段内,
可以广播得到MAC)。
2.路由器收到这个包,查看是否是自已的IP,如果不是就查看路由表进行数据的转发(如果不知路由器MAC则进行ARP请求得到,它们在同一网段内,
可以广播得到MAC)。如果路由表中不存在网段与接口的关系就从默认接口车发出去。
3.直到最后有路由发现这个IP是自己的网段IP时就发送这个数据包给它(如果不知目标MAC则进行ARP请求得到,它们在同一网段内,
可以广播得到MAC)。
4.目标接收到这个ARP数据包后就向源源发送这个ARP请求应答,使源机得到目标的IP和MAC,存放到源机本地的ARP缓存中。
5.以后双方就可以直接进行数据包发送了,不用再进行ARP请求了。

参考原文:http://www.xpc8.com/wd/xpc8044856.html


路由器:提路由的功能,就是根据目的地IP决定将数据包发送到那个路由器或服务器的功能。
路由器通过路由表决定数据包应发向下一站的IP,一直到达目标机器,转发过程中也是路由器路由表的生成过程(保存到路由器本地方便下一次查找),如果路由表中没有就从默认端口进行转发出去。
路由器转发过程中会解析数据包中的转发IP地址的,但数据包中的源和目标IP和端口号都是不变的,但转发过程中的以太网数据帧的MAC地址的变化的,因为网络最底层(机器与机器之间的数据通信是以MAC地址进行的)的数据通信是通过MAC地址来惟一确的。


DHCP
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,用于动态进行IP地址的分配。

DHCP Client:DHCP客户端,通过DHCP协议请求IP地址的客户端。
DHCP Server:DHCP 服务端,负责为DHCP客户端提供IP地址,并且负责管理分配的IP地址。

DHCP工作原理:
1.发现阶段:客户端发送DHCP Discovery,因为DHCP Server对应于DHCP客户端是未知的,所以DHCP客户端
发出的DHCP Discovery报文是广播包,源地址为0.0.0.0目的地址为255.255.255.255。网络上的所有支持
TCP/IP的主机都会收到该DHCP Discovery报文,但是只有DHCP Server会响应该报文。
如果网络中存在多个DHCP Server,则多个DHCP Server均会回复该DHCP Discovery报文。

2.DHCP Server 提供阶段:DHCP Server收到DHCP Discovery报文后,解析该报文请求IP地址所属的Subnet。
并从dhcpd.conf文件中与之匹配的subnet中取出一个可用的IP地址,从可用地址段选择一个IP地址后,首先发
送ICMP报文来ping该IP地址,如果收到该IP地址的ICMP报文,则抛弃该IP地址,重新选择IP地址继续进行
ICMP报文测试,直到找到一个网络中没有人使用的IP地址,用以达到防治动态分配的IP地址与网络中其他设备
IP地址冲突,这个IP地址冲突检测机制,可配置),设置在DHCP Discovery报文中yiaddress字段中,表示为该
客户端分配的IP地址,并且为该Lease设置该Subnet配置的Option,例如默认leases租期,最大租期,router
等信息。

3.DHCP Client 选择阶段:DHCP Client收到若干个DHCP Server响应的DHCP Offer报文后,选择其中一个
DHCP Server作为目标DHCP Server。选择策略通常为选择第一个响应的DHCP Offer报文所属的DHCP Server。

然后以广播方式回答一个DHCP Request报文,该报文中包含向目标DHCP请求的IP地址等信息。之所以是以广
播方式发出的,是为了通知其他DHCP Server自己将选择该DHCP Server所提供的IP地址。

4.DHCP Server确认阶段:当DHCP Server收到DHCP Client发送的DHCP Request后,确认要为该DHCP Client
提供的IP地址后,便向该DHCP Client响应一个包含该IP地址以及其他Option的报文,来告诉DHCP Client可
以使用该IP地址了。然后DHCP Client即可以将该IP地址与网卡绑定。另外其他DHCP Server都将收回自己之
前为DHCP Client提供的IP地址。

5.DHCP Client重新登录网络:当DHCP Client重新登录后,发送一个以包含之前DHCP Server分配的IP地址
信息的DHCP Request报文,当DHCP Server收到该请求后,会尝试让DHCP客户端继续使用该IP地址。并回答
一个ACK报文。

但是如果该IP地址无法再次分配给该DHCP Client后,DHCP回复一个NAK报文,当DHCP Client收到该NAK报
文后,会重新发送DHCP Discovery报文来重新获取IP地址。

6.DHCP Client更新租约:DHCP获取到的IP地址都有一个租约,租约过期后,DHCP Server将回收该IP地址,
所以如果DHCP Client如果想继续使用该IP地址,则必须更新器租约。更新的方式就是,当当前租约期限
过了一半后,DHCP Client都会发送DHCP Renew报文来续约租期。

参考原文:http://network.51cto.com/art/201406/441752.htm




猜你喜欢

转载自huangyongxing310.iteye.com/blog/2318962