本文的东西是基础理论知识,因此不必记住,前面的操作系统的文章我不想更新了,现在想写一写网络相关的文章,本篇文章是第一篇,仅传递网络相关知识的概念,不必牢记~
简单来说TCP/IP协议是网络中所有相关协议簇的简称,它是众多网络协议的集合,这一类协议簇是有非常多的协议,如常见的:ARP/TCP/UDP/IP/ICMP/IGMP/HTTP/DNS/DHCP/TFP/MQTT
等等
TCP/IP
模型是一个抽象的分层模型,这个模型中,所有的TCP/IP
系列网络协议都被归类到4个抽象的"层"中。每一抽象层创建在低一层提供的服务上,并且为高一层提供服务。 完成一些特定的任务需要众多的协议协同工作,这些协议分布在参考模型的不同层中的,因此有时称它们为一个协议栈。
网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如TCP/IP
,是一组不同层次上的多个协议的组合。TCP/IP
通常被认为是一个四层协议系统,其分层模型如下:
每一层都负责不同的功能。
也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
有时也称作互联网层,处理数据报在网络中的活动,例如数据报路由。其中网络层协议包括IP
协议(网际协议), ICMP
协议(互联网控制报文协议),以及IGMP
协议(英特网组管理协议)。
运输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP
协议族中,有两个传输层协议: TCP(传输控制协议)和UDP(用户数据报协议)。TCP为两台主机提供高可靠性
的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层
,同时还要确认接收到的数据是正确的,并且将其组装成有序的数据递交到应用层,同时还要处理超时重传、流量控制等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以更加方便来处理数据。
而另一方面,UDP
则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端,因此数据的可靠性必须由应用层来提供,这就导致应用层处理程序的困难,但是对于数据要求不可靠的传输通常使用UDP协议,如视频的播放等。
应用层就是用户程序,不同的应用会有不一样的操作
HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。
FTP(File Transfer Protocol,文件传输协议),由名知义,用于文件传输。
POP3(Post Office Protocol, version 3,邮局协议),收邮件用。
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。
SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。
BOOTP(Boot Protocol,启动协议),应用于无盘设备。
NTP(Network Time Protocol,网络时间协议),用于网络同步。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。
DNS(Domain Name Service,域名服务),用于完成地址查找,邮件转发等工作(运行在TCP和UDP协议上)。
ECHO(Echo Protocol,回绕协议),用于查错及测量应答时间(运行在TCP和UDP协议上)。
SNMP(Simple Network Management Protocol,简单网络管理协议),用于网络信息的收集和网络管理。
ARP(Address Resolution Protocol,地址解析协议),用于动态解析以太网硬件的地址。
提示:图中的RARP是基本不怎么使用的协议
为了标识互联网中的每台主机的身份,设计人员为每个接入网络中的主机都分配一个IP
地址(Internet Protocol Address
),是一个32
位的整数地址,只有合法的IP
地址才能接入互联网中并且与其他主机进行通信。注意了:IP
地址是软件地址,是协议栈中识别主机身份的唯一标识。如果IP地址是不合法的,那么无法连接上公网(或者称为广域网)。
互联网上的每个接口必须有一个唯一的IP地址, IP地址长 32bit,IP地址并不采用平面形式的地址空间,如 1、2、3等。 IP地址具有一定的结构,有五类不同的互联网地址格式:
A 类网络地址的第一个字节的第一位必须为0 ,因此, A 类网络地址第一个字节的取值范围为0~127
(注意:但0 和127 不是有效的A 类网络地址号)
B 类网络地址的第一个字节的第一位必须为1 ,且第二位必须为0,因此, B 类网络地址第一个字节的取值范围为128~191
C 类网络地址的第一个字节的第一位必须为1,第二位必须为1,第三位必须为0,因此C类网络第一个字节的取值范围为192~223
D 类IP地址的第一个字节前四位为1110
,那么它第一个字节的取值范围为224~239
,约占据了所有IP地址的十六分之一,它是一个专门保留的地址,它并不指向特定的网络,目前这一类地址被用于多播。
E 类IP地址的第一个字节前四位必须为1111
,那么它第一个字节的取值范围为240~255
,约占据了所有IP地址的十六分之一,是为将来使用而保留的,其中32bit全为1的IP地址(255.255.255.255)用作广播地址。
IP地址特点
类别 | 第一字节(二进制) | 第一字节取值范围 | 网络号个数 | 主机号个数 | 适用范围 |
---|---|---|---|---|---|
A类 | 0XXX XXXX | 0~127 | 125 | 16777214 | 大型网络 |
B类 | 10XX XXXX | 128~191 | 16368 | 65534 | 中型网络 |
C类 | 110X XXXX | 192~223 | 2097152 | 254 | 小型网络 |
D类 | 1110 XXXX | 224~239 | — | — | 多播 |
E类 | 1111 XXXX | 240~255 | — | — | 保留 |
局域网(Local Area Network
,缩写为LAN
),又称内网,指覆盖局部区域(如办公室或楼层)的计算机网络,局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能,是在一定区域内由多个计算机连接组成的网络,比如腾讯、阿里的内网,在内部的计算机上的数据可以互联互通、数据共享等。简单来说,当我们使用的开发板接入路由器的时候,电脑的网络也接入路由器,那么开发板与电脑就组成局域网,数据在链路层上是互联互通的。当然,板子也能通过网线直连电脑,这样子也是组成一个局域网络,数据可以在两个主机之间进行通信。
广域网(Wide Area Network
,缩写为WAN
),又称广域网、外网(与的外网是不一样的概念)、公网。是连接不同地区计算机以进行通信的网络,这种网络通常会跨越很大的范围,覆盖的范围从几十公里到几千公里,它能连接多个地区、城市并能提供远距离通信服务,但是注意的是我们说的广域网并不等同于互联网。
简单来说(我使用比喻的方式表达),如果局域网是小溪,不同区域有很多的小溪,这些小溪汇聚成江河,那么这些江河就是广域网,然后这些江河再流入大海,这个大海就是互联网。互联网就是由无数个局域网,通过广域网线路汇聚互联起来,就形成了互联网。互联网的特点是开放、互联,如果一个公司的局域网没有连接到互联网,那这个局域网就不属于互联网,仅仅属于内部通信的网络。
举个例子,如果你家在某网络运营商办理了网络服务,可能他们将送你一个光猫,然后你拿着这个光猫就能上网了,你可能觉得需要多人使用网络,所以你又去买了一个无线路由器,让家人也能连接到网络上,那么这个家就是一个局域网,然后局域网的通信是通过运营商连接到广域网上的。
这个示意图虽然简单,却把LAN、WAN、Internet
三者全包含了。无线路由器把电脑、手机等设备连接到局域网LAN
上,并分配IP地址,即局域网IP
,我们可以称之为LAN-IP
,LAN-IP
所到之处,就是局域网的范围,像我们电脑的IP地址(192.168.1.xxx)
就是一个局域网IP
,而路由器的地址就是运营商给我们的一个IP
地址,这个IP地址是绝对合法的,可以看做是WAN-IP
(实际上这个IP
地址也是运营商的局域网IP地址(相对运营商来说),这个地址在运营商中转换成一个真正的广域网IP
地址,因为真正的IP地址是不够的,只能再细分下去,但是这些事情我们暂时无需理会
,只要把路由器的IP地址看做是WAN-IP
即可)。
而运营商是一个边界,国家与国家之间有边界,网络之间也有边界,运营商就是局域网LAN
与广域网WAN
的边界。局域网LAN-IP
可以在局域网内部有效,但是无法跨越边界进入广域网中,LAN-IP是路由器分配给我们的IP,那么我们想要跨越边界进入广域网中,就需要将LAN-IP变成有效的的IP地址,也就是WAN-IP
,那么在路由器中就需要将IP地址进行转换,完成LAN-IP<—>WAN-IP
地址转换(NAT
)。
当持有WAN-IP
的IP包顺利到达下一个边界Internet Gateway
,这是通往互联网Internet
的最后一道关卡,即边界。左边是广域网,右边是互联网,也需要做WAN-IP 与 Global-IP
(互联网公共IP)的转换才能进入互联网中,我们知道这种概念即可,无需过多深入。
相关代码可以在公众号后台获取。