开始网络了,上一节终章了,软件编程的最后一幕
Linux网络
1、OSI七层模型 和 TCP/IP四层模型
OSI七层是理论标准,TCP/IP四层是现实电脑互联网真正在用的。
OSI七层(从上往下)
1.应用层:就是你要发的数据内容,比如网页、聊天消息
2.表示层:给数据做加密、转码,翻译格式
3.会话层:管要不要建立连接,维持会话
4.传输层:决定用TCP还是UDP,管数据怎么传
5.网络层:负责找路线,数据包怎么从一台机器跑到另一台机器,IP就在这一层
6.数据链路层:管同一个局域网内部,机器之间互相传数据,MAC地址在这里
7.物理层:网线、网卡、信号这些硬件介质
TCP/IP四层(实际干活的)
1.应用层:要传输的原始数据,一堆协议都在这里
HTTP网页、HTTPS加密网页、FTP传文件、DNS域名解析、Telnet远程登录、SMTP发邮件,全都属于应用层协议。
2.传输层,两个老大:UDP 和 TCP
• UDP(用户数据报)
简单粗暴,不用提前建立连接,直接扔数据包出去。占用资源少,速度快。
缺点:不可靠,发出去不管对方收没收到,丢包也不重传。
适合直播、语音通话。
• TCP(传输控制协议)
面向连接,通信之前三次握手建好连接;传输的时候有确认应答,保证对方收到;通信结束四次挥手断开连接。
还有滑动窗口、拥塞控制、掉线检测这些机制。
优点:稳定可靠,数据不会乱、不会丢。
缺点:流程复杂,占系统资源更高。
适合下载文件、网页访问。
3.网络层:IP协议(IPv4、IPv6),还有ARP、RARP
IPv4就是我们熟悉的点分十进制IP,比如192.168.0.175;ARP作用:通过IP找对方的MAC物理地址。
4.网络接口层:网卡、驱动,负责局域网底层收发。
2、IPv4 IP地址
IP由两部分拼起来:网络位 + 主机位
• 网络位:代表是哪个局域网,相当于小区名字
• 主机位:这个局域网里面的第几台电脑,相当于小区里面的房间号
举例子:192.168.0.175
网络位不变,主机位全部写0,就是网段号:192.168.0.0
网络位不变,主机位全部写1,就是广播地址:192.168.0.255,发给这个局域网所有设备。
一个局域网能用的机器总数:2的主机位次方,减去2。扣掉网段本身、广播地址,这两个不能分配给普通电脑。
MAC地址:网卡出厂自带,全球唯一,同一个局域网内部,靠MAC地址完成数据传递。IP负责跨网络,MAC负责隔壁局域网内通信。
子网掩码:用来切分哪部分是网络位、哪部分是主机位。掩码二进制1对应的是网络位,0对应的是主机位。
例子:IP:192.168.0.175,掩码255.255.255.0,简写也可以写成192.168.0.175/24。
3、IP地址五大分类
• A类:1.0.0.0‑126.255.255.255,掩码255.0.0.0,做大大型网络;私有A段:10.x.x.x
• B类:128.0.0.0‑191.255.255.255,掩码255.255.0.0,中型网络;私有B段:172.16‑172.31.x.x
• C类:192.0.0.0‑223.255.255.255,掩码255.255.255.0,小型局域网,我们家里路由器192.168.x.x就是C类;私有C段:192.168.x.x
• D类:224‑239开头,专门做组播广播
• E类:240‑255开头,保留做实验,不给普通电脑用。
公网IP:可以直接连上互联网;
私有IP(上面写的私有段):只能在自己家局域网内部用,不能直接上互联网,路由器做NAT转换才能访问外网。
4、Linux网络命令
- ifconfig:查看网卡信息
ifconfig -a:查看全部网卡,包括没启用的网卡
sudo ifconfig 网卡名 IP地址/24 up:手动给网卡设置IP,并且启用网卡。
5、虚拟机两种上网模式(NAT vs 桥接)
- NAT模式(默认)
Windows主机能上网,虚拟机就跟着上网。
虚拟机的IP是虚拟出来的。
👉 虚拟机可以访问外面互联网;但是外面别的机器访问不到虚拟机,别人连不上你的虚拟机,不适合做服务器。适合单纯上网学习。
- 桥接模式
Windows和虚拟机,两张逻辑网卡,各自独立拿局域网IP。
👉 虚拟机相当于局域网一台独立电脑,既能访问别人,局域网别的电脑也能访问虚拟机。
缺点:同一物理网卡分给两个系统,有些登录场景容易出问题,Windows和虚拟机不能同时稳定联网。
小结
1.TCP稳但是麻烦占资源,UDP快但是会丢包;三次握手建连接,四次挥手断连接。
2.IP负责跨大网找目标,MAC负责同一个屋子里面设备互相传话;子网掩码用来区分网络号和主机号。
3.私网IP只能家里局域网玩,想要访问互联网要路由器NAT。
4.虚拟机NAT:虚拟机能出去,别人进不来;桥接:虚拟机变成局域网独立机器,内外互通。