Fork me on GitHub

从1写TCPIP协议栈1:引言及环境搭建

引言

本白参考课程(见下)进行TCPIP协议栈的开发练习,整个协议栈开发练习建立在驱动层已有的基础上进行,并且其中部分步骤由于所学课程已经过时,因此相关软件及配置都是从网络上搬运而来,大家看个乐就行~

软件:VMware、PowerShell、WireShark、VS-C++

课程:网易云课堂-从0写TCPIP协议栈

书籍:《TCP-IP协议族(第4版)》

资源链接:

【1】虚拟机迅雷资源下载:https://msdn.itellyou.cn/ 

【2】VMware下载:https://pan.baidu.com/s/1LtFxFf_7BhHE0Ejc44rQWA?pwd=6666     提取码:6666

【3】PDF密码破解工具:https://pan.baidu.com/s/15pM9X7nQa8WOkrqZ5yocuw?pwd=6666 提取码:6666

【4】《TCP-IP协议族(第4版)》:https://pan.baidu.com/s/1woEVywLLt84sKYe7xEKXHA?pwd=6666  提取码:6666

环境搭建:创建VM虚拟机

默认已经安装VM软件并且激活~

环境搭建:创建VM虚拟机共享磁盘

自己定义一个就好了~一般来说新建的虚拟机打开是自动激活的~

环境搭建:配置虚拟机网络连接模式

虚拟机的网络连接模式一共有三种:桥接模式、主机(单机)模式、NAT(Network Address Translation)模式,这里配置时看下是否全部打开:

其中DHCP动态地址分配这里可以不用管,你喜欢的话也可以配置为static,这个时候已经可以实现主机和虚拟机之间互相ping

到这里我们基本的环境搭建已经完成~开始编写TCPIP协议栈~当然,在此之前针对上述的一些点继续解释,毕竟我也忘了好多了~

环境搭建:知识点归纳

虚拟机网络连接模式

  • 桥接模式:主机承担网桥的作用,将虚拟机直接连接至外网;虚拟机和主机地位相同,虚拟机可以访问主机,也可以访问外网,但这会增加虚拟机被攻击的风险
  • NAT模式:​虚拟机和主机构建一个专用网络,并通过虚拟网络地址转换(NAT)设备对IP进行转换,该模式下要求虚拟机和主机IP的网络号一致。并且虚拟机向外部网络发出的请求都会由主机代为转发出去,从外部网络返回的响应,也都会由主机先接收,然后再转发给虚拟机的虚拟网卡。由此可见NAT模式中外网无法直接访问虚拟机,只有主机可以;同一主机网络下的各虚拟机也可以互相ping
  • 单机模式:比NAT模式更加封闭的网络连接,该模式下虚拟机和主机共处一个LAN下,仅主机与虚拟机相互通信,外网无法干涉主机与虚拟机;同一主机网络下的各虚拟机也可以互相ping
  • 三种模式下主机和虚拟机都可以互相ping,只是针对外网的访问权限不同,个人理解来看:桥接(双向)>NAT(单向)>单机/主机(禁止)

IP地址

类别
最大网络数
IP地址范围
单个网段最大主机数
私有IP地址范围
A
126(2^7-2)
1.0.0.1-127.255.255.254
16777214
10.0.0.0-10.255.255.255
B
16384(2^14)
128.0.0.1-191.255.255.254
65534
172.16.0.0-172.31.255.255
C
2097152(2^21)
192.0.0.1-223.255.255.254
254
192.168.0.0-192.168.255.255

IP地址用   . 分为4个byte字节用来标识两组信息:网络号+主机号/网络号长度,比如192.168.0.1/24192.16.0代表网络号,1代表主机号,24代表网络号长度

网络地址=IP地址&子网掩码,即网络地址为192.168.0.0

广播地址=网络地址主机号全部变为1,即广播地址为192.168.0.254

对于车载网络来说,一个子网都有255个主机号,你能有255个ECU?更别说有255个子网了,是足够用的,因此不存在网络号向主机号借位的情况,当然基于安全考虑我们不会把所有ECU的IP地址划分到一个LAN中。人们常说IPV4耗尽但仍然继续使用是因为NAT连接模式,我们可以理解为1对100转换为1对10对10,也就是说只要无线NAT下去,IPV4不存在不够用的情况,但是越来越多的NAT将会增加延迟,因此IPV6才是传统以太网的未来。NAT的地址分配有三种,分别是端口分配,动态分配,静态分配。

PING

Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)信息报文,目的主机回复信息报文/差错报文,以此测试目的站是否可达及了解其有关状态 。

需要注意Ping成功不代表TCPIP协议配置正确,只能说在主机之间存在一条贯通的物理通道,如果执行ping成功而网络仍无法使用,那么问题很可能出在网络系统的软件配置方面。我们一般使用的PING实际是ICMP-PING,只有当主机的网关开启了ICMP-PING过滤时,我们的PING应更换为TCP-PING。

环境搭建:常见问题排查

在环境搭建后,我们可以尝试主机和虚拟机互相PING,但是有的同学会和我一样遇到ping不通的场景,那可以先检查一下自己的设置都对不对,自己是基于主机模式进行的,这里主要列举主机模式:

关闭防火墙

防火墙的入站规则

VM服务是否启动

虚拟机IP、网关IP是否正确

并且需要保证这三个IP地址都在一个子网下,也就是192.168.254.0.,若您发现自己虚拟机详细信息中显示主机IP不可用,请重新配置虚拟机网卡或者重装虚拟机

以上方法均无用:CSDN/重启

posted @ 2023-01-31 21:44  张一默  阅读(242)  评论(0编辑  收藏  举报