0712-网络通信基础
首先是四大层
应用层 |
传输层 放端口 |
网际层 放IP |
链路层 放mac地址 |
封包
正常程序都是经过TCP,UDP等到达网际层,然后发送信息
注 TCP/IP协议簇就是在通信层的一大堆协议
但是有特殊的程序,可以通过原始套接字来直接跳到网际层
网络通信、网络掩码
IP和子网掩码这俩要换2进制,然后按位与操作确定网络号 几乎是在一起的
IP:192.168.33.99
子网掩码:255.255.255.0
192 --> 2(1100 0000) 255 --> 2(1111 1111)
168 --> 2(1010 1000) 255 --> 2(1111 1111)
33 --> 2(0010 0001) 255 --> 2(1111 1111)
99 --> 2(0110 0011) 0 --> 2(0000 0000)
按位与操作 都为1,才为1 ; 只要有一个0,就为0
1100 0000 1010 1000 0010 0001 0000 0000
192 168 33 0
前三组是网络号,最后组是主机号
三台电脑间的通信:为什么不能直接把网线剪开仨接一起
因为他传递的是信号,不是电流
就像电报一样,比如A给B发个数据100
换成2进制是0110 0100
举个例子,可能在这根线里,每0.1秒是一个单位,1就有电,0就不给点
然后总数据就是0.8秒,那台电脑通过把这些信号解析出来,就得到了0110 0100
所以三台电脑间不能接线,那么怎么解决呢,诞生了一个东西 --> HUB 集线器
但是这个东西有个缺点,他收到数据后会以广播(会发给所有人)的方式发出去
所以电脑一旦多了,网络就很卡
后来有新的技术出现了 --> 交换机
这个东西能做到该广播的时候广播,该单播的时候单播
怎么实现单播的呢,就是通过mac地址
那么为什么你给别人发消息的时候从没写过mac地址呢
因为他是通过TCP/IP协议簇里有个arp协议
作用是找到你的IP地址对应的Mac地址
首先通过arp广播得到目标IP对应的mac地址
就是我先给你发个包
每个网卡默认能接收一个mac地址,是通用mac地址FF:FF:FF:FF:FF:FF
那么链路层看到这个通用地址就会接收,传到网际层
(可以cmd输入指令arp -a来查看)
【扩展:
一般的家用电脑如果关闭了防火墙而且没有杀毒软件之类的是可以通过广播大量的通用mac地址的数据包来攻击的
但是企业级的之类的防护措施好的服务器会有高级的防控机制,例如限制每个端口上的广播包数量、启用广播风暴抑制等
而且更有甚者,他们的终端干脆不会接收FF:FF:FF:FF:FF:FFmac地址的全网广播信息】
好一点的交换机是会有操作日志的,能看到你是哪个IP和mac地址的,但是能改,但是不告诉你(
也可以定向,只要你知道对方的mac地址而且没做任何防护措施,因为链路层只要Mac地址对的上就会接收
【arp攻击(非常简单的方法),就是A,B,C仨人,C给A发回送的Mac地址,
那么后续A就会认为他本来要给B发的mac地址实际上是C的
同样对B也进行这样的操作,那么A和B的通信信息都发到了C上
这时候C再把A的信息继续给B,B的信息给A,就可以实现监听或篡改数据的效果】
但是现在一般不要想了,因为现在数据都会加密了,你获取了解码出来破解不了也没用
这里开始,我们已经直到了同一个子网内机器怎么互相通信,但是,不是同一个子网呢
比如我和隔壁的哥们发信息,我俩不是同一个子网,怎么办呢
这个时候,默认网关出现了,他可以把交换机里的IP和mac地址转发给隔壁的网关
这个默认网关其实就是路由器
这个玩意就相当于有俩网卡,一个对接你,一个对接隔壁哥们
如果你发给隔壁哥们,检测到你的目标不在同一个子网,那么他会默认转换为默认网关的mac地址
就会发给你的路由器,然后路由器再发给隔壁路由器,隔壁路由器再把mac地址换成目标IP的mac地址,然后再发过去被接收
这个是两个子网内通信,但是问题来了,更多子网间该怎么通信呢
其实和这个差不多,比如QQ
实际上你给你的好友发个信息,这个信息流先是被你的默认网关接收到,然后QQ的服务器会介入
你的信息被QQ服务器收到了之后会进行处理,然后QQ就会充当一个灯塔的角色
指引你的信息流跳转下一个路由器,然后就这么一直跳啊跳直到到达目标的子网网关
后面的就是目标的网关再把数据发给目标计算机,然后QQ客户端进行处理,最后你的好友就收到了
(顺带提一句,所以你认为QQ的服务器真的不会审查你的数据吗,实际上我记得互联网通信这方面有个法律,
这种交流的信息会必须要求至少保留6个月还是12个月,像腾讯这样的大厂一般可能3,5年,更长时间或者干脆就是永久
所以不是查不到,是不想查,因为数据流太多了,而且要管也很麻烦,要是哪天给你想整个罪名,一翻记录翻出来条12年前你整的烂活拿出来定个罪也不是不可能)
然后就是国际间怎么通信了,实际上差不多,就是这些数据会经过国家间的海底光纤啥的,
然后转移到当地国家的ISP网络,适配当地的通信协议啥的,最后转接到目标计算机上
以及路由器,你的计算机都是根据mac来接收信息的,所以路由器再转换的时候IP不变,但是Mac会根据下一级的目标变
所以在传输数据的时候,目的IP不变,但是mac地址会根据每两级改变
域名解析:输入网址的时候因为用户很难记住那一串IP数字,所以诞生了域名
你输入的网址,先到DNS域名解析服务器被解析,然后才传回来告诉你服务器的IP在哪给你转过去
以及因为这俩不是在一起的,所以可能你的数据流先到南方的DNS解析服务器,再到北方的WEB服务器
所以为了提高速度,百度啊什么的会有南北大区这些东西,就是南方我建一个,北方还有一个
# DNS域名解析服务器都是国家掌控的,如果黑客把域名服务器黑了,然后你做一个盗版的京东网站
# 那么这个时候,所有解析域名解析出来就都是你的盗版网站,用户分不出来,就真的是末日了
# 所以这个东西是国家掌控,一旦出事就是大事,所以不允许个人或企业掌控

