计算机网络基础
总结学习计算机网络的知识点
网络中的分层
IP地址
IP地址是 Internet Protocol Address 的缩写,译为“网际协议地址”。
一台计算机可以拥有一个独立的 IP 地址,一个局域网也可以拥有一个独立的 IP 地址(对外就好像只有一台计算机)。对于目前广泛使用 IPv4 地址,它的资源是非常有限的,一台计算机一个 IP 地址是不现实的,往往是一个局域网才拥有一个 IP 地址。
ABC类地址的划分
划分只是为了较为规范化的管理,就像软件框架一样进行约定,负责的功能模块及条理也清晰了许多;但这类规范并不是强制性要求,只是有效合理的划分可以节省更多的ip资源,也可缓解IP地址紧缺(资源不够用)。
- A类保留政府机构
- B类分配给中等规模公司
- C类分配给需要的任何人
- D类地址用于网管专业配置地址
- E类地址用于研发人员的科研实验
- D、E类IP普及受众范围小,普众的实际使用率低,因此非重点述说。
私有地址属于非注册地址,专门为组织机构内部使用(局域网)。以下列出留用的内部私有地址:
- A类 10.0.0.0–10.255.255.255
- B类 172.16.0.0–172.31.255.255
- C类 192.168.0.0–192.168.255.255
MAC
MAC 地址是 Media Access Control Address 的缩写,直译为“媒体访问控制地址”,也称为局域网地址(LAN Address),以太网地址(Ethernet Address)或物理地址(Physical Address)。
但是只是知道ip地址,也就是只知道一个大概的地理地址范围,所以引入了MAC
地址,MAC
是所有计算机网卡中的一个唯一值,世界上所有的计算机中MAC
的值都是不同的。其在网卡出场时就已经被写入了网卡中了。
端口
由于一台计算机会提供各种各样的网络服务。所以,如果我们仅仅找到了计算机的地理位置,但是还是不可以与其进行通信,这是因为服务器不知道应该将数据发送给这台计算机中的哪一个程序处理。这是就需要通过指定端口号,不同的端口号对应着不同的网络服务程序。如:Web 服务的端口号是 80,FTP 服务的端口号是 21,SMTP 服务的端口号是 25。
子网掩码
子网掩码(Subnet Mask)在计算机网络中起着至关重要的作用,特别是在IP地址的分配和管理中。子网掩码的主要作用是定义IP地址中哪些部分标识网络(网络地址),哪些部分标识主机(主机地址)。
在IPv4地址中,一个地址由32位组成,通常表示为四个十进制数,每个数代表8位(一个字节),用点分隔,例如192.168.1.100。子网掩码也是一个32位的二进制数,通常也表示为点分十进制形式,例如255.255.255.0。
网络地址
网络地址是识别网络ID用的 ,如192.168.1.0 ,说明该网段属于192.168.1的段 ,属于不可用IP;
子网掩码通过与IP地址进行逻辑“与”(AND)操作,来确定IP地址中的网络部分和主机部分。在二进制表示中,子网掩码通常是一系列的1后跟一系列的0,1表示对应的IP地址位是网络部分,0表示对应的是主机部分。
例如,如果有一个IP地址192.168.1.100和子网掩码255.255.255.0,它们的二进制表示如下:
IP地址: 192.168.1.100
11000000.10101000.00000001.01100100
子网掩码: 255.255.255.0
11111111.11111111.11111111.00000000
将IP地址与子网掩码进行逻辑“与”操作,得到网络地址:
网络地址: 192.168.1.0
11000000.10101000.00000001.00000000
在这个例子中,子网掩码255.255.255.0表示前三个字节(24位)是网络地址,最后一个字节(8位)是主机地址。
广播地址
用于进行广播的通用地址 ,如192.168.1.255。PC在询问网关时,把信息发往192.168.1.255,于是192.168.1.1-192.168.1.254的所有机器都可以接收到它发来的信息,信息会问谁是网关你的MAC地址是多少,如果有一台机器是网关他就会回应。
如果要向同一个网络中的所有设备发送数据,则需要使用广播地址。广播地址是一个特殊的IP地址,它使得所有同一子网中的计算机都能够接收到数据。
在IPv4网络中,广播地址通常是网络地址范围内最后一个可用的IP地址。要计算广播地址,你需要知道网络的IP地址和子网掩码。
以下是计算广播地址的步骤:
- 将IP地址转换为二进制格式。
- 将子网掩码转换为二进制格式。
- 对IP地址和子网掩码进行逻辑“与”(AND)操作,得到网络地址。
- 对子网掩码取反(将所有1变成0,所有0变成1),得到反向掩码(也称为广播掩码)。
- 将网络地址和反向掩码进行逻辑“或”(OR)操作,得到广播地址。
公式:网络地址 || (~子网掩码) = 广播地址
例如,假设有一个IP地址为192.168.1.100,子网掩码为255.255.255.0,我们来计算其广播地址:
IP地址的二进制表示:
192.168.1.100 = 11000000.10101000.00000001.01100100
子网掩码的二进制表示:
255.255.255.0 = 11111111.11111111.11111111.00000000
计算网络地址(IP地址 AND 子网掩码):
11000000.10101000.00000001.01100100 AND
11111111.11111111.11111111.00000000 =
11000000.10101000.00000001.00000000 = 192.168.1.0
计算反向掩码(NOT 子网掩码):
NOT 11111111.11111111.11111111.00000000 =
00000000.00000000.00000000.11111111 = 0.0.0.255
计算广播地址(网络地址 OR 反向掩码):
11000000.10101000.00000001.00000000 OR
00000000.00000000.00000000.11111111 =
11000000.10101000.00000001.11111111 = 192.168.1.255
所以,在这个例子中,广播地址是192.168.1.255。
快速运算:
子网掩码 /26,32-26=6(子网掩码未遮罩的6个0为h,h为主机编号位,26-2即最大可用主机数;也由此可推出广播地址为 x.x.x.最大可用主机数+1
在实际应用中,你通常不需要手动进行这些转换和计算,因为大多数网络设备和操作系统都可以自动处理这些操作。但是,了解这个过程有助于你更好地理解网络地址和子网划分的工作原理。
子网掩码ABC类IP地址最大网络范围与最大可用主机数
IP地址分为两部分,左边部分用来标识主机所在的网络,被称为网络地址,右边被用来标识主机本身,称为主机地址;可左右部分各字节占总比的 ?/4 并不知道,也由此,地址的类别开始进行划分开来。
IP地址类型 | 地址表示范围 | 缺省(默认)子网掩码 | 网络位n与主机位h |
---|---|---|---|
A类地址 | 1.0.0.1-127.255.255.255 | 255.0.0.0 | 0nnnnnnn.hhhhhhhh.hhhhhhhh.hhhhhhhh |
B类地址 | 128.0.0.1-191.255.255.255 | 255.255.0.0 | 10nnnnnn.nnnnnnnn.hhhhhhhh.hhhhhhhh |
C类地址 | 192.0.0.1-223.255.255.255 | 255.255.255.0 | 110nnnnn.nnnnnnnn.nnnnnnnn.hhhhhhhh |
网关
相同网段的ip,但不同子网掩码,也是可以连接的;但,这取决于被子网划分的最大可用主机数的多数主机中相比的最小值。所以这就出现了网关
网关(Gateway)又称网间连接器,就是一个网络连接到另一个网络的“关口”。
网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机(如附图所示)。网络B向网络A转发数据包的过程。
所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。
指定网关
前面我们知道,所谓的网关其实就是一个 IP 地址,它是用来连接两个网络的,所以我们需要在路由器上配置好网关的 IP 地址。
如何让PC1:192.168.1.3/26、PC2:192.168.1.70/26,两台不同网络地址的PC进行通信?
答:配置各自PC的网关,并向路由器添加各自的网关地址,即可使两台PC进行信息传递
一台电脑的默认网关是不可以随随便便指定的,必须正确指定,否则一台电脑就会将数据包发给不是网关的电脑,从而无法与其他网络的电脑通信。
正确指定的前提: 根据主机已有IP地址类型的当前具体的网段所容纳的可用最大主机数范围,进行的一个IP的设定。
算出当前主机网络最大可用容纳范围主机数
公式:2^h-2 = 最大可用主机数
2*(32-26)-2 = 62 (去掉网络地址 192.168.1.0和广播地址 192.168.1.63)
求出当前主机IP的所在子网划分范围
当前IP地址的子网划分范围也就是当前网关设置的范围
网络地址 | 子网掩码 | 子网划分范围 | 广播地址 |
---|---|---|---|
192.168.1.0 | 255.255.255.192 | 1~62 | 192.168.1.63 |
192.168.1.64 | 255.255.255.192 | 65~126 | 192.168.1.127 |
192.168.1.128 | 255.255.255.192 | 129~190 | 192.168.1.191 |
192.168.1.192 | 255.255.255.192 | 193~254 | 192.168.1.255 |
由上表可得出公式:
- 子网划分从第二网段开始的网络地址=广播地址+1
- 子网划分从第二网段开始的可容纳主机范围最小值=广播地址+1
- num:子网划分可容纳主机范围最小值
- num+(2^h-2)-1 = 子网划分可容纳主机数范围最大值
- 广播地址 = 子网划分可容纳主机数范围最大值+1
最后配置各自PC的网关,并向路由器添加各自的网关地址
最后在设置 网关地址 的时候,只要该网关在该网络的范围中即可。
例如,上面例子的网关可以设置为:
- PC1的网关地址为192.168.1.60
- PC2的网关地址为192.168.1.126
TCP/IP 协议基础
TCP/IP 协议没有表示层和会话层,其中每层对应到 OSI 的协议主要有下面这些:
应用层:TFTP,HTTP,FTP 等
传输层:TCP,UDP
网络层:IP,IGMP 等
数据层:MTU 等
物理层:ISO2110,IEEE802 等
我们经常见到如:HTTP,TCP,UDP,IP,来了解下其中比较常用的 TCP 和 UDP 协议
TCP/IP 包含许多协议,比如 TCP,UDP,IP,HTTP,FTP 等,平常上网都会使用到它们,必须要了解些概念:
- TCP(Transport Control Protocol):传输控制协议
- UDP(User Datagram Protocol):用户数据报协议
- IP(Internetworking Protocol):网间协议
- HTTP(Hypertext Transfer Protocol):超文本传输协议
- FTP(File Transfer Protocol):文本传输协议
TCP 协议的特点
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它有如下的特点:
- TCP 提供一种面向连接的、可靠的字节流服务
在一个 TCP 连接中,仅有两方进行彼此通信。广播和多播不能用于 TCP - TCP 使用校验和,确认和重传机制来保证可靠传输
- TCP 给数据分节进行排序,并使用累积确认保证数据的顺序不变和非重复
- TCP 使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制
- 面向连接的传输
- 端到端的通信
- 高可靠性,确保传输数据的正确性,不出现丢失或者乱序
- 全双工方式传输
- 采用字节流的方式,即以字节为单位传输字节序列
- 紧急数据传送功能
- 一对一传输
注意:TCP 并不能保证数据一定会被对方接收到,因为这是不可能的。TCP 能够做到的是,如果有可能,就把数据递送到接收方,否则就(通过放弃重传并且中断连接这一手段)通知用户。因此准确说 TCP 也不是 100% 可靠的协议,它所能提供的是数据的可靠递送或故障的可靠通知。
UDP 协议的特点
UDP(User Datagram Protocol)的简称,即是用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,它有如下特点:
- 面向无连接的传输
- 不可靠的数据传输服务
- 时间延迟小
- 实时性强
- 支持一对一,一对多,多对多的连接
- 不含拥塞控制机制,进程能够以任意速率发送数据
TCP 和 UDP 的区别
两者主要有 5 点区别:
- TCP 协议面向连接,UDP 面向非连接,广播
- TCP 传输慢,UDP 传输快
- TCP 保证数据顺序,UDP 不保证
- TCP 保证数据正确性,UDP 可能丢包
- TCP 对系统资源要求多,UDP 要求少
参考资料
- https://www.runoob.com/w3cnote/summary-of-network.html
- https://blog.csdn.net/w8y56f/article/details/120920921
- https://help.aliyun.com/zh/ecs/user-guide/network-faq?utm_content=g_1000230851&spm=5176.20966629.toubu.3.f2991ddcpxxvD1#title-gu4-uzk-12r
- https://hoochanlon.github.io/helpdesk-guide/enhance/net/neta.html#%E6%8C%87%E5%AE%9A%E7%BD%91%E5%85%B3%E7%9A%84%E8%AE%BE%E8%AE%A1
- https://cizixs.com/2015/03/29/basic-socket-programming/