网络概念扫盲帖
- 子网掩玛
- 子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。
- 只表示在匹配网络包目标地址时需要对比的比特数量
- 子网掩码 设置成 0.0.0.0 表示默认路由
根本不需要匹配,任何地址都可以匹配到这个记录 - 举例理解 转与知乎链接
如果让你判断一个IP地址:
192.168.1.199的网络号和主机号分别是什么?请问你怎么判断?
你凭什么说192.168.1是网络号?199是主机号?有什么根据吗?
但是如果我给你一个IP地址是以下(带子网掩码)形式的:
IP:192.168.1.199
子网掩码:255.255.255.0
那么根据大家公认的规则,你就可以得出这个IP的网络号和主机号了,怎么算呢?
子网掩码的长度和IP地址一样也是一串32位的二进制数字,
只不过为人类的可读性和记忆性的方便,通常使用十进制数字来表示,
例如把上面的IP地址和子网掩码都转换成相应的二进制就是下面这样的:
十进制 二进制IP
192.168.1.199 ‐>11000000.10101000.00000001.11000111
子网掩码:255.255.255.0 ‐>11111111.11111111.11111111.00000000
十进制的显示形式是给人看的,二进制的显示形式是给计算机看的。。。
子网掩码的左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;
右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。
例如上面的子网掩码255.255.255.0的 “1”的个数是左边24位,
则对应IP地址左边的位数也是24位;
十进制 二进制IP
地址:192.168.1.199 ‐>11000000.10101000.00000001.11000111
子网掩码:255.255.255.0 ‐>11111111.11111111.11111111.00000000
则这个IP地址的网络号就是11000000.10101000.00000001 ,
转换成十进制就是 192.168.1,网掩码255.255.255.0的 “0”的个数是右边8位,
则这个IP地址的主机号就是11000111,转换成十进制就是199
- 网关 (来源于百度)
网关(Gateway)又称网间连接器、协议转换器。默认网关在网络层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连
-
DNS :用于将域名解析为IP 地址
- 域名:
- 由标号序列组成,标号之间用“.” 隔开
- 级别低的域名写在前面,级别高的域名写在后面
- 域名服务器
- 本地域名服务器
- 根域名服务器
- 顶级域名服务器
- 权限域名服务器
- 域名介些
- 递归查询: 本地域名自己查询
- 迭代查询: 本地域名考其他服务器查询
- 高速缓存提高了DNS 查询效率
- 域名:
-
一次收发数据的基本流程
- 创建阶段:创建套接字
- 连接阶段:将管道连接到服务端的套接字上
- 通信阶段:收发数据
- 断开阶段:断开管道并删除套接字
查看套接字 netstat
Socket 基本概念
是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议-
TCP/IP
- TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。
- 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。
- 在传输层中有TCP协议与UDP协议。
- 在应用层有:TCP包括FTP、HTTP、TELNET、SMTP等协议
- UDP包括DNS、TFTP等协议
-
TCP 头部格式
-
网络连接过程
- 连接
- 收发数据
- MTU: 一个网络包的最大长度 一般为 1500 Byte
- MSS: 除去头部后,一个网络包所能容纳的TCP数据的最大长度,Tcp 和 IP 头部加起来是40Byte,MTU 减去这个长度就是MSS;
- FCS:Frame Check Sequence 帧校验序列。
大体结构看下图
-
短连接:
- 连接->传输数据->关闭连接
- HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。
-
长连接:
- 连接->传输数据->保持连接 -> 传输数据->... ->关闭连接。
- 长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。
-
Http的长连接:
- HTTP也可以建立长连接的,使用Connection:keep-alive,HTTP 1.1默认进行持久连接。HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持(貌似最新的 http1.0 可以显示的指定 keep-alive),但还是无状态的,或者说是不可以信任的。
-
什么时候用长连接,短连接?
- 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。
- 像Web网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像Web网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。总之,长连接和短连接的选择要视情况而定
-
发送接收方式
- 异步
报文发送和接收是分开的,相互独立的,互不影响。这种方式又分两种情况:
(1)异步双工:接收和发送在同一个程序中,由两个不同的子进程分别负责发送和接收
(2)异步单工:接收和发送是用两个不同的程序来完成。 - 同步
报文发送和接收是同步进行,既报文发送后等待接收返回报文。 同步方式一般需要考虑超时问题,即报文发出去后不能无限等待,需要设定超时时间,超过该时间发送方不再等待读返回报文,直接通知超时返回。
在长连接中一般是没有条件能够判断读写什么时候结束,所以必须要加长度报文头。读函数先是读取报文头的长度,再根据这个长度去读相应长度的报文
- 异步
ARP
交换机
-
路由器
- 概念
- 路由聚合 : 多个子网会被合并成一个子网,子网掩码会发生变化,同时,目标地址也会改成聚合后的地址;