既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如何获取对端的mac地址
一个主机,第一次通过网线连接到路由器上,然后发送DHCP请求,路由器收到之后就会进行响应,给主机分配IP地址,但是此时是不知道对方的mac地址,那我们如何获取呢?
ARP协议
ARP协议:ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议。主要功能是通过IP地址获取mac地址
ARP协议格式:
以太网目的地址和以太网源地址:描述识别相邻的设备之间的数据传输
上层协议类型:网络层的协议类型,进行数据分用时选择上层的解析协议
硬件类型:链路层网络类型,1为以太网
协议类型:要转换的地址类型,0x0800为IP地址
硬件地址长度:对于以太网地址为6字节
协议地址长度:对于和IP地址为4字节
op字段:1表示ARP请求,op字段为2表示ARP应答
arp协议如何通过IP地址获取MAC地址
封装arp请求,然后将arp请求广播到整个局域网(私网)中,(以太网头中设置的对端mac地址为FFFFFFFFFFFF,在arp请求中描述自己的mac地址和ip地址,以及对端的IP地址和对端的mac地址空白),相邻设备收到arp请求之后,检测目的IP地址是否与自己相符,若相符则组织arp响应,填充自己的mac地址回复过去,若不符合则直接丢弃。
主机获取相邻设备mac地址之后,会缓存一段时间(默认为20 ~30分钟)
arp局域网欺骗攻击:恶意主机收到arp广播请求,伪装自己,告诉主机自己就是目标主机,将自己的mac地址发送过去。解决方案:防火墙白名单,直接列出受信任的相邻主机,如果发送过来的mac地址不在白名单上,则直接丢弃
MTU
MTU:MTU为最大传输单元,是链路层限制的数据帧大小(根据组网方式不同,默认数值也不同,以太网默认为1500B)
mtu对上层协议应用的影响
tcp协议:tcp在传输层进行三次握手时,进行MSS协商,也就是最大数据段大小协商,告诉对方自己的mss是多少,然后通信时取较小的一方作为最大传输数据段大小,每次从缓冲区中取出不大于mss大小数据进行传输。因此通常也说tco在传输层会自动进行数据分段。MSS = MTU - 最小IP报头长度 - 最小TCP报头长度;
udp协议:因为udp不考虑mss,只要数据段大小小于64k-28,就可以进行传输,但是这个数据大小若是大于mtu,则会在网络层进行数据分片
udp不保证数据可靠传输,一个udp报文若在网络层进行了分片,则传输过程中,一个分片出问题,整个udp报文都会被丢弃;也就意味着udp传输过程中,分片越多,在传输过程中出现问题的几率就越大
解决方案:程序员在应用层使用udp协议时最好考虑mss问题,将udp数据段按照计算的mss进行分包处理
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
更新**