网络基础知识

网络协议 百科

是程序(人)与计算机,计算机与计算机交流(通讯)的基础,通俗的比喻,人与人之间交流需要同一种语言,计算机的网络通讯需要协议。

协议的三要素

语法:一断内容要符合一定的规则和格式,例如http协议的开头是http://xxx.com

语义:这一段内容规则代表的含义,例如http开头就表示http协议

顺序:先干啥后干啥

网络分层

7层是指OSI七层协议模型,主要是:应用层(Application)表示层(Presentation)会话层(Session)传输层(Transport)网络层(Network)数据链路层(Data Link)物理层(Physical)

5层只是OSI和TCP/IP的综合,是业界产生出来的非官方协议模型,但是很多具体的应用。实际应用还是TCP/IP的四层结构。为了方便可以把下两层称为网络接口层。五层体系结构包括:应用层运输层网络层数据链路层物理层。 

4层是指TCP/IP四层模型,主要包括:应用层运输层网际层网络接口层

网络为什么要分层

复杂的程序都要分层,这是程序设计的要求

个人理解,分层相当于人类社会的分工协作,目的是提升效率便于管理,很多网络程序都是采用这种模型,不同的进程做不同的事情。

复杂的事情简单化就要拆分。

域名

百度百科 维基百科

IP地址

IP(英语:Internet Protocol Address)是一种在Internet上的给主机编址的方式,也称为网际协议地址。常见的IP地址,分为IPv4IPv6两大类。

通俗的比喻,就相当于我们的通讯地址(你住哪),邮件快递都需要通讯地址。

MAC地址

MAC地址也叫物理地址、硬件地址,由网络设备制造商生产时烧录在网卡(Network lnterface Card)的EPROM(一种闪存芯片,通常可以通过程序擦写)

通俗的比喻,相当于我们的身份证,身份证号是唯一的不能不变。但是可以造假,操作系统识别出来的mac地址是可以更改的,它只不过是一个字符串。我们常说的修改mac指的是修改电脑中记录的既注册表中的记录

为什么需要两种地址

送快递的时候,既要验证地址对不对,又要验证人对不对,ip4地址不够用,很多网络对外是一个公网IP

公有地址 百科

公有地址(Public address)由Inter NIC(Internet Network Information Center因特网信息中心)负责。
这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。即常说的公网IP查询

私有地址 百科

在现在的网络中,IP地址分为公网IP地址和私有IP地址。公网IP是在Internet使用的IP地址,而私有IP地址则是在局域网中使用的IP地址。私有IP地址是一段保留的IP地址。只使用在局域网中,无法在Internet上使用。即内网IP

地址范围

无类型域间选路(CIDR)百科

产生原因:地址划分不合理

C 类地址能包含的最大主机数量实在太少了,只有 254 个。当时设计的时候恐怕没想到,现在估计一个网吧都不够用吧。而 B 类地址能包含的最大主机数量又太多了。6 万多台机器放在一个网络下面,一般的企业基本达不到这个规模,闲着的地址就是浪费。

将 32 位(说的是二进制形式)的 IP 地址一分为二,前面是网络号,后面是主机号。从哪里分呢?你如果注意观察的话可以看到,10.100.122.2/24,这个 IP 地址中有一个斜杠,斜杠后面有个数字 24。这种地址表示形式,就是 CIDR。后面 24 的意思是,32 位中,前 24 位是网络号,后 8 位是主机号。

一般云主机的安全组白名单设置使用这种规则。 反爬虫笔记

特殊地址

广播地址 百科

广播地址(Broadcast Address)是专门用于同时向网络中(通常指同一子网)所有工作站进行发送的一个地址。

任何第一个字节大于223小于240的IP地址(范围224.0.0.1-239.255.255.254)是多点广播地址

网络通讯方式有单播,广播,组播。广播应用,有线电视,DHCP服务

通俗的比喻,老师需要对全班发送相同通知(信息),如果一个一个叫到办公室里说,非常好使,直接在教师里通知大家效率高。

子网掩码 百科

子网掩码(subnet mask)又叫网络掩码地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址主机地址两部分。

作用

子网掩码是在IPv4地址资源紧缺的背景下为了解决lP地址分配而产生的虚拟lP技术,通过子网掩码将A、B、C三类地址划分为若干子网,从而显著提高了IP地址的分配效率,有效解决了IP地址资源紧张的局面。另一方面,在企业内网中为了更好地管理网络,网管人员也利用子网掩码的作用,人为地将一个较大的企业内部网络划分为更多个小规模的子网,再利用三层交换机的路由功能实现子网互联,从而有效解决了网络广播风暴和网络病毒等诸多网络管理方面的问题

0.0.0.0 百科

代表当前主机

127.0.0.1 百科

127.0.0.1是回送地址,指本地机,一般用来测试使用。回送地址(127.x.x.x)是本机回送地址(Loopback Address),即主机IP堆栈内部的IP地址,主要用于网络软件测试以及本地机进程间通信,无论什么程序,一旦使用回送地址发送数据,协议软件立即返回,不进行任何网络传输。

网关 百科

网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同层–应用层

通俗比喻,大家都知道,从一个房间走到另一个房间,必然要经过一扇门。同样,从一个网络向另一个网络发送信网关息,也必须经过一道“关口”,这道关口就是网关。顾名思义,网关(Gateway [1] 就是一个网络连接到另一个网络的“关口”。也就是网络关卡

TIPS 由于历史的原因,许多有关TCP/IP的文献曾经把网络层使用的路由器称为网关,在今天很多局域网采用都是路由来接入网络,因此通常指的网关就是路由器的IP

网关实质上是一个网络通向其他网络的IP地址。

DNS 百科

域名系统(服务)协议(DNS)一种分布式网络目录服务,主要用于域名与 IP 地址的相互转换

通俗的解释,即使访问网站如果让用户输入ip地址,太麻烦,不好记(缺少语义),于是发明了URL来定位站。

DNS是就是URL和IP的映射关系,通过URL查询到对应服务器的IP,然后访问。

查找IP地址的过程,这个过程就是域名解析

域名注册后,注册商为域名提供免费的静态解析服务。
一般的域名注册商不提供动态解析服务,如果需要用动态解析服务,需要向动态域名服务商支付域名动态解析服务费。

本机的DNS是hosts文件,操作系统网络程序会优先查询hosts

Hosts文件 百科

Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析

路由 百科

路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程 [1] 。路由工作在OSI参考模型第三层——网络层数据包转发设备。路由器通过转发数据包来实现网络互连。虽然路由器可以支持多种协议(如TCP/IP、IPX/SPX、AppleTalk等协议),但是在我国绝大多数路由器运行TCP/IP协议路由器通常连接两个或多个由IP子网或点到点协议标识的逻辑端口,至少拥有1个物理端口。路由器根据收到数据包中的网络层地址以及路由器内部维护的路由表决定输出端口以及下一跳地址,并且重写链路层数据包头实现转发数据包。路由器通过动态维护路由表来反映当前的网络拓扑,并通过网络上其他路由器交换路由和链路信息来维护路由表。

静态路由 百科

静态路由(英语:Static routing),一种路由的方式,路由项(routing entry)由手动配置,而非动态决定。与动态路由不同,静态路由是固定的,不会改变,即使网络状况已经改变或是重新被组态。一般来说,静态路由是由网络管理员逐项加入路由表

动态路由 百科

动态路由是指路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整

网络协议

UDP协议

UDP协议介绍,无状态,无响应,不保证可靠性会丢包

场景:

1.需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用

2.不需要一对一沟通,建立连接,而是可以广播的应用

3.需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也毫不退缩,一往无前的时候

TCP协议

TCP消息类型

信息描述
Syn用于启动和建立连接。它还可以帮助您在设备之间同步序列号。
ACK帮助对方确认它已收到SYN。
SYN-ACK来自本地设备的SYN消息和先前数据包的ACK。
FIN (鳍)用于终止连接。

三次握手

三次握手时序图

开始,客户端和服务端都处于 CLOSED 状态。

先是服务端主动监听某个端口,处于 LISTEN 状态。然后客户端主动发起连接 SYN,之后处于 SYN-SENT 状态 (第一次)

服务端收到发起的连接,返回 SYN,并且 ACK 客户端的 SYN,之后处于 SYN-RCVD 状态(第二次)

客户端收到服务端发送的 SYN 和 ACK 之后,发送 ACK 的 ACK,之后处于 ESTABLISHED 状态,因为它一发一收成功了(第三次)

服务端收到 ACK 的 ACK 之后,处于 ESTABLISHED 状态,因为它也一发一收了

四次挥手

四次挥手时序图

第一次挥手, A发送FIN,进入FIN_WAIT1状态,B收到FIN 进入CLOSED_WAIT状态,

第二次挥手,A收到ACK,进入FIN_WAIT_2状态(如果此时B断开,则A将永远留在这个状态,TCP协议没有对这个状态的处理,linux有,可以通过tcp_fin_timeout草书,设置超时

第三次挥手,B发送FIN,ACK到达A,

第四次挥手,A发送ACK给B,进入TIME_WAIT时间(这个时间足够长,足够B重新发送第三方次挥手,然后A重新进行第四次挥手,可以防止产生混乱,如端口被新应用占领,等到原先的包都失效,在空出新端口)

协议规定等待时间为 2MSL(2分钟),MSL 是 Maximum (最大) Segment (段) Lifetime (一生) ,报文最大生存时间。任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。实际应用中常用的是30秒,1分钟和2分钟。

TCP状态机

DNS 协议

这个协议就像是个地址簿,主要负责 “域名” => “IP 地址” 的查询。每次我们要邮寄信件之前都要拿出来查一查。

DHCP 协议

DHCP 全称叫动态主机配置协议(Dynamic Host (主机) Configuration Protocol (协议) ),主要负责计算机接入网络时的初始化。计算机刚开始就只有网卡的 MAC 地址,通过 DHCP 可以给它分配 IP 地址,并得到默认网关地址(这很重要,不知道网关就上不了网)和 DNS 服务器的地址。有了这些东西,这台计算机就可以和外界通讯了

ARP 协议

IP => Mac 根据ip地址获取mac地址

ARP 全称叫地址解析协议( Address (地址) Resolution Protocol),它服务于现在局域网中最流行的以太网协议。在以太网中,ARP 协议负责解析远程主机 IP 地址对应的 MAC 地址。之所以需要 ARP 协议,是因为我们平常应用程序连接目标计算机进行网络通讯时,都是提供了域名或 IP 地址。但对以太网来说,要想发信件出去,它要的是对方的 MAC 地址

RARP 协议

RARP 全称叫反向地址转换协议(Reverse Address (地址) Resolution Protocol (协议) )。顾名思义,它和 ARP 协议相反,负责的是 MAC 地址到 IP 地址的转换。RARP 协议已经被上面的 DHCP 协议所取代,平常用不太到了。

ICMP 协议

ICMP 全称叫互联网控制报文协议(Internet Control Message Protocol),它能够检测网路的连线状况,以保证连线的有效性。基于这个协议实现的常见程序有两个:ping 和 traceroute,它们可以用来判断和定位网络问题。

IGMP 协议

IGMP 全称叫互联网组管理协议(Internet Group Management Protocol (协议) ),它负责 IP 组播(Multicast)成员管理


数据传输过程

笔记参考

极客时间 趣谈网络协议

网络配置要素 https://www.cnblogs.com/guojun-junguo/p/9966412.html

网络分层 https://blog.csdn.net/cc1949/article/details/79063439

网络通讯模式 https://www.cnblogs.com/hnrainll/archive/2011/09/01/2161839.html

极客时间 许式伟架构课 IP网络:连接世界的桥梁

TCP协议(上):因性恶而复杂,先恶后善反轻松

TCP协议(下):西行必定多妖孽,恒心智慧消磨难

TCP 三次握手(SYN,SYN-ACK,ACK)