每当我们拿起手机,打开微信和某一个小姐姐聊天的时候。我们总会用到一个看不见也摸不到的东西,它就是网络。如果没有网络,就不知道女神的邮箱是多少,更发不了邮件了!为了能让翠花知道我的心意,和翠花更近一步我决定要学习网络的知识。
Internet实际上是冷战的产物,早在1968年6月DARPA提出了“资源共享计算机网络”,目的就是让DARPA的所有电脑都互联起来,这个网络就叫做ARPnet,即“阿帕网”,是最早的Internet的雏形。但是这种网络协议不能互联不同计算机和不同类型的操作系统,没有纠错功能。在1974年12月Robert Kahn和Vinton Cerf正式发表了一份TCP协议的详细说明,在1983年停止使用NCP,互联网上的主机全部使用TCP/IP。
往期推荐:
Linux下并发程序设计(4)——System V进程间通信
史上最全的Linux常用命令汇总(超全面!超详细!)收藏这一篇就够了!
为了实现不同的计算机生产厂家生产的计算机能够互相通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了"开放系统互联参考模型",即著名的OSI/RM模型(Open System Interconnection/Reference Model)。网络采用分而治之的方法设计,将网络的功能划分为不同的模块,以分层的形式有机组合在一起。每层实现不同的功能,其内部实现方法对外部其他层次来说是透明的,每层向上层提供服务,同时使用下层提供的服务。网络层级结构指的是网络层次的结构和每层所使用协议的集合,OSI和TCP/IP是两类非常重要的体系结构。
TCP/IP协议毫无疑问是互联网的基础协议,没有它就根本不可能上网,任何和互联网有关的操作都离不开TCP/IP协议。不管是OSI七层模型还是TCP/IP的四层、五层模型,每一层中都要自己的专属协议,完成自己相应的工作以及与上下层级之间进行沟通。
激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。物理层记住两个重要的设备名称,中继器(Repeater,也叫放大器)和集线器。
2)数据链路层(Data Link Layer)
数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。为达到这一目的,数据链路必须具备一系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
数据链路层重点:
3)网络层(Network Layer)
网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。如果您想用尽量少的词来记住网络层,那就是"路径选择、路由及逻辑寻址"。
网络层中涉及众多的协议,其中包括最重要的协议,也是TCP/IP的核心协议——IP协议。IP协议非常简单,仅仅提供不可靠、无连接的传送服务。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。
网络层重点:
网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能;
基本数据单位为IP数据报;
包含的主要协议
ping
命令就属于ICMP协议4)传输层(Transport Layer)
第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。 传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这一层,信息传送的协议数据单元称为段或报文。 网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口。
传输层的重点:
传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;
包含的主要协议:
重要设备:网关。
5)会话层
会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
6)表示层
表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。
7)应用层
为操作系统或网络应用程序提供访问网络服务的接口。
会话层、表示层和应用层重点:
可能纯文字的方式不是特别好理解,那个就借鉴我给我梦寐以求的女神(翠花)发邮件的生活实例来帮助理解OSI七层模型每层的作用吧!
马上就要七夕节了,我想着是不是得和我的翠花女神表示一下我的心意啊。于是乎,我打开了浏览器输入email.163.com输入账户密码登录个人账户(应用层)。但是准备写邮件时,发现不知道写什么好,直接写我嘻哈你可以做我的女朋友吗?
,这样显得太直男了吧!当然不行,为了表达出我对翠花的爱慕之心,又不那么直接我决定精心制作一个图片和制作一段视频作为邮件内容。
当写完邮件后邮件会从应用层到表示层,将图片的jpg格式文件和视频的mp4格式文件翻译成1010的二进制形式(如果有压缩、加密也是在这一层)再传递给会话层,会话层会进行判断发送的内容是不是所需要传递的内容,如果是要传输的内容就传递给传输层,如果不是就存放在硬盘中。传递给传输层以后传输层就确定端口号(包括发送端口和原端口)和相关的协议,发现这是一个邮件,那个邮件的端口号就是TCP协议,随后写入端口号和TCP协议再传输给网络层,网络层负责把发送人的ip和收件人的ip都写入数据。网络层写入数据以后传输给数据链路层,数据链路层负责写入原mac地址和目标mac地址,虽然ip是在负责在互联网传递,但是数据依旧得在局域网进行传输,通过一个局域网跳到另外一个局域网,再跳到另一个局域网,最终到达,当这些工作都完成以后就可以投入互联网进行传输了。
当投入传输以后,到达目标的地址后(数据链路层),发现这里有一封邮件是我们的(网络层),再通过它的ip地址找到更加具体的地址(XX县XX镇XX村)(传输层),再发现收件人是翠花(会话层),翠花接收到邮件以后兴奋的打开,发现是精心制作的一张图片和一段视频(表示层)。翠花看到后感动的都哭了,随后就直接微信给说哭哭啼啼的说你怎么现在才说嘻哈我啊,你知道我等你这句等了多久吗?就这样我和翠花走在了一起。
OSI七层模型只是提出的一个理想化模型,在实际应用中常用的是TCP/IP四层模型,而不是OSI七层模型。
上图就是TCP/IP的三次握手,通过发送三次信息来确保信息的传输的正确性,但是为什么只发送三次呢,为什么不发送5次或者更多次数呢?这个就是著名的两军问题。
一支红色部队在山谷里扎营,在周围的两边山坡上驻扎着蓝色部队。红色部队比两支蓝色部队中的任意一支都要强大,但两支蓝色部队加在一起起就要比红色部队强大。如果一支蓝色部队单独作战,那么它就会被红色部队击败;如果两支蓝色部队同时进攻,他们将能够把红色部队击败。两支蓝色部队需要同步他们的进攻,但他们惟一的通信媒介是步行进入山谷,在那里他们可能被俘虏,从而将信息丢失(换言之,他们必须使用非可靠的通信信道) 。问题是,是否存在一个协议,能够使得蓝色部队取胜?
TCP协议可能也会出现类似的问题,但是发送一次回应一次再发送一次就应该非常可靠了。
用户通过文件服务器上传一个文件,数据一旦捡接就上传数据到应用层,发现这是一个文件,就打入一个FTP的包头,接下来数据传输到传输层。传输层就打入传输层的包头,记录发送端口和接收端口,然后数据传入网络层写入IP包头,要写入原IP和目标IP。写完后传输到数据链路层,写入原mac地址和目标mac地址。写完后传入网线向对方传递,这个传递过程就是和刚才的过程相反最后客户使用FTP的客户端就可以读取到相关的数据。
0.0.0.0
到255.255.255.255
表示形式:常用点分形式,如202.38.64.10,最后都会转化为一个32位的无符号整数
注意:字段后面括号中的数字是指该字段在IP数据包头部信息中所占的位数(bit)IPV4的包头不一定是20个字节,因为有一些可选项。同时,这也是IPV4比IPV6传输速度慢的原因。
网络类别 | 最大网络数 | IP地址范围 | 最大主机数 | 私有IP地址范围 |
---|---|---|---|---|
A | 126(2^7-2) | 1.0.0.0—126.255.255.255 | 2^24-2 | 10.0.0.0—10.255.255.255 |
B | 16384(2^14) | 128.0.0.0—191.255.255.255 | 2^16-2 | 172.16.0.0—172.31.255.255 |
C | 2097152(2^21) | 192.0.0.0—223.255.255.255 | 2^8-2 | 192.168.0.0—192.168.255.255 |
注意:
DNS是域名解析协议,DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。这也是DNS的官方说法。说白了就是:在互联网中通过IP 地址来进行通信。但是IP 地址的表示形式是数字,很难进行记忆(比如116.213.120.232),所以为每个 IP取一个人类更易记忆的域名形式(比如www.google.com),而通过DNS 来把解析域名成为 IP(将方便人理解的命名格式解析成计算机能够理解的格式,也可以将IP 翻译成域名)。
注意:域名是全球唯一的;互联网中域名是有结构有规划的;域名是分级的,在进行域名和IP地址解析时才能更容易找到。
递归查询
要么做出查询成功响应,要么作出查询失败的响应。一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机
迭代查询
服务器收到一次迭代查询回复一次结果 ,这个结果不一定是目标IP与域名的映射关系,也可以是其它DNS服务器的地址。
从查询内容上分
为了区分一台主机接收到的数据包应该交给那个任务来出处理,采用端口号来进行区分。端口号是一个16位的数字(1~65535),端口号由IANA(Iternet Assigned Numbers Authority)管理,通常分为众所周知端口:1~1023 (1 ~ 255之间为众所周知端口,256 ~1023端口为UNIX系统占用);注册端口:1024 ~ 49105;动态或私有端口:49151 ~ 65535。同时,TCP端口号与UDP端口号相互独立。
协议名 | 端口号 |
---|---|
FTP(文件传输协议) | 20 / 21 |
SSH(安全shell协议) | 22 |
telent(远程登录协议) | 23 |
DNS(域名系统) | 53 |
http(超文本传输协议) | 80 |
SMTF(简单邮件传输协议) | 25 |
POP3(邮局协议3代) | 110 |
netstat -an
选项:
-a : 查看所有连接和监听端口
-n : 显示IP地址和端口号,而不显示域名和服务名
1、网关在所有内网计算机访问的不是本网段的数据报时使用。
2、网关负责将内网IP转换为公网IP,公网IP转换为内网IP。
我已经注意了我们班的一个漂亮妹妹好好久了,我想着有机会了给她告白。由于是同班同学互相认识就不需要老师(
网关
)来引荐,直接把信息传递给她就可以了,但是她嫌弃我身高没有一米八拒绝了我的表白。没过几天我又看上了隔壁班的一个漂亮妹妹二,但是又不能直接跑到隔壁班把信给漂亮妹妹二,因为怕我怕被他们班对那个漂亮妹妹有意思的男生们暴打一顿。于是乎我找到了班主任,让班主任(网关
)帮我传递消息给隔壁班的班主任(负责把外网IP翻译成内网IP)然后交给交换机,最终把信(数据)交给隔壁班的漂亮妹妹。
但是隔壁班的妹妹又嫌弃我技术不够厉害,敲代码速度太慢,就这样也把我给拒绝了。看来我的眼光不能只局限于此,隔壁学校的姑娘多男孩还少,我只能对隔壁学校的姑娘下手了。终于,我发现了隔壁学校的翠花姑娘。但是,我又不能直接联系翠花,班主任说隔壁学校的姑娘他也没有办法,但是班主任说可以找找校长,就凭借他和校长
之间的关系让校长棒棒忙联系一下应该是完全没有问题的。班主任拿着我的情书交给校长,给校长苦口婆心和说了一番,校长最终终于应下了。校长把信交给了隔壁学校的老师,让那个隔壁学校的老师把信交给翠花。
隔壁学校的翠花收到了我的信以后,并没有明确表达她的意思。我为了追到她,想尽各种方法约出来一起玩,一起吃饭、一起看电影。我和她现在的状态正处于暧昧期,我想着这个时候告白的话一定会成功,但是学校突然宣布封闭式管理,我的线下表白计划失败了。我只能通过线上发邮件的方式来给翠花告白了。
上面的这一个小故事可能编写的不是特别好,但是很形象的比喻了网关的作用。通过不同的网关(故事中的班主任、校长、老师就相当于网关)进行数据传递,我的信息才能从一个网络传递到下一个网络,再传到下一个网络最终到达目的地。
关于字节序这篇文章写得很详细理解字节序 大端字节序和小端字节序,想加深理解的可以看这篇文章。
不积小流无以成江河,不积跬步无以至千里。而我想要成为万里羊,就必须坚持学习来获取更多知识,用知识来改变命运,用博客见证成长,用行动证明我在努力。
如果我的博客对你有帮助、如果你喜欢我的博客内容,记得“点赞” “评论” “收藏”一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。