计算机网络原理简介

物理层

电脑要联网,需要做什么,电脑需要电, 然后电脑与电脑之间相连,需要网,可以用光纤,双绞线,同轴电缆,无线波等

把电脑连接起来的物理手段,主要规定了网络的一些电气特性,作用是负责传送0和1的电信号.而机械特性,及时如何去与硬件相连了,比如说插座的尺寸

数据链路层

物理层传过来了0和1,但是单纯的0和1没有啥意义,所以就要规定解读方式,就像情报一样,怎么来解读. 这里我们了解到一组电信号构成一个数据块,这个数据块有了一个称呼:帧.每个帧两个部分,头和数据(head and data)

帧是有底线(长度)的,所以如果数据量特别大,就需要分割成多个帧来发送.如果在传输过程中,有出错的数据,那么就需要重新发送了,所以帧必须得这么做.能够识别出物理层发过来的比特流,还得能识别出起始和终止.

我们都知道,网络有时候很不稳定的,那你得怎么来区分,那个算是一帧呢.这里就有了这么几种方法来能够提高正确识别率.

 1.使用字符填充的是首尾定界符 2.使用比特填充的首尾标志法 3.违法编码法 4.字节计数法.

生活中, 常见的这么一种情况 : 我在今目标给你传送一份文件,怎么确保我给你的文件中,有没有遭到损坏. 我是发出了,  具体是你来收,那么你就得有这么一个能力,能够发现给你的文件中,有没有差错.如果有,你给我说一下啊,收到的不对啊,你再给我重新发一份.也可能因为网络的问题,你的网掉线了,这样你就不能给我回复收到情况了. 那么我这里就启用一个定时器,到点了,你还没回复,那我就认为你收到的有问题, 再次重新发送.那么这个就是差错控制功能了.也是数据链路层主要功能之一.

差错控制其实是有两种的,一种就是上面说的那种,我发现接收的文件异常,那么就让你重新给我发一份完整的. 这种方式叫:自动请求重复. 还有一种,它就是,我接收了一部分的文件,再次让你给我发的时候,是继续上一部分之后的内容发过来.这种方式对于我的要求就高了,不光能判断文件有差错,还得能判断发生错误的位置,方便你再次给我续传.叫:前向纠错FEC.

  

网络层

上面我们讲了,数据链路层,是两个相邻端点之间的数据帧的传送,现在需要从A传到Z,中间经过了BCD等等.那么这就需要网络层的支持了.

再来个例子: 把我工位上的零食拿到你的工位,可以有n种走法,但是为了方便处理零食的传输,咱俩之间可以先建立这么一个逻辑通路(逻辑上了,那就是虚的喽),然后经过若干人传递给你.不过最终是只有一个人把所有零食都给你.

还有一种方式就是: 把零食分成好几袋,若干袋零食构成了是我要送给你的.每个零食都带包装,我可以分开传送.然后你就会收到不定是谁给你的某一种.当然这也有种可能,中间零食被人吃了.你的零食就丢了部分.

上面两种就是通信子网对端系统提供的两种网络服务: 虚电路和数据报.

咱们继续讲上面的零食. 虚电路方式,从最开始我就确定了,先转给B,再转C,以此类推,直到转给你.

而数据报呢,就是每次某个人收到这包零食,再去做出选择. 咱们这个来回转,拿这么一个词来表达: 路由选择.

如果在传送的过程中, B 不光需要转我给你的零食,还要转其他人给好有的零食,那么B就可能因为需要转的东西太多.就给拥塞了.这个想想双十一,就完全就理解了.要么就是仓库太小,有些包就给丢了.有些就是因为分拣员少.来不及处理那么多的量.所以堵了很正常嘛.

当然这个拥塞不光光是网络层可能出现,其它层也可能会出现的.

为了解决这个堵塞,可以分组排队,按顺序来,也可以把一些包直接给丢了.减少压力.

 这里 有一个我们常说的ip

那么现在就来讲讲这个ip,互联网上的每一台计算机,都会分配到一个ip地址.地址分为两个部分,前一部分代表的是网络,后一部分代表的是主机.前一部分代表的是网络,后一部分代表主机,处于同一个子网络的电脑,其ip地址网络部分必定是相同的.但是不一定是同一个子网络. 因为不清楚其网络部分是前24位,还是16位. 怎么才能从ip地址,判断两台计算机是属于同一个子网络的.需要一个参数了: 子网掩码.

两个ip地址与子网掩码分别进行and运算(两个数位都为1,运算结果为1,否则为0),比较结果是否相同,是的话,就是在同一个子网络中了.否则就不是.

ip协议的作用是啥: 就是先给每个计算机分配一个ip地址,方便寻址.然后确定哪些地址是同一个子网络中.这样ip从源传输实体取得数据,如果源址和目标地址在一个网络中,ip就直接通过网络将数据传输给目的主机了,而若目的主机不在一个网络中,ip数据报就会一个模块传到另一个模块.直到目的地址为止.

传输层

经过上面物理层, 电脑有了电,首先是活了经脉开始复苏.,经过数据链路层,成功把物理层的内容进行了解析开始传输,经过网络层,利用其路由的选择,成功的从一台主机联系上了目标主机.联系上了目标主机,但是主机上有很多的应用程序,他们都用到了网络.当你用今目标接收一个文件, 但同时你还开着wechat和qq,那么电脑怎么就确定了, 是今目标传过来的这个文件, 这里就有一个新的名词出现了,就是我们常说的端口. 文件可以理解成一个数据包,这个包发送到今目标的文件传输端口,今目标就能取到这个包了.

我们都知道,基本没有什么东西,都是无限长的, 上面讲了帧有长度, 之前也有提过redis有固定槽数,端口也不例外. 介于0-63353,不过我们的系统启动, 会占用一定的端口,也就是0-1023,用户想用,只能用1024之后的.

这么区分网络层和传输层,也就相对好区分一点了. 网络主要是确定主机到主机,但是传输层就变成了端到端了.有了主机ip和端口,就可以唯一确定一值了. 程序之间的通信到目前就接通了.

上面我们说了,找到了组织了,就比如说: 找到了中国共产党的接头人. 但是情报不能乱给吧.这里就需要建立连接了. 数据包要传输,要传输到哪里,就需要在数据包中添加 一个端口,方便一一对应. 数据包加入端口信息,就得需要一个新的协议了.最简单的方式就是UDP协议了.格式很简单.就是标头和数据.标头中有源端口和目标端口,长度和校验和. 数据就是具体的内容了. 整个UDP数据包中是放在ip数据包中的数据部分了. 它是怎么来发送的呢,就是只要我手里有内容,管你能不能收,反正我是脱手了.也不对这个数据包进行检查和修改. 所以它快, 但是不可靠啊.所以就得完善它,那么就有了tcp协议. 

tcp与udp最大的区别就是, 它有确认机制.udp不管你能不能收,所以很有可能这个包就丢了. tcp就会确保数据不会遗失, 那它怎么做到的: 

三次握手: 我发送请求,你回应请求,我再次发送收到你回应请求的请求.

当然也可能你没有回应请求,我就来个计时器,到点了,还没给我应答, 我就重发,也会记录这个时间.存放当前的目的端的时间,以后就不乱估时间了, 多智能化.

请求连接有了,释放链接也不难理解: 

有时候,它想懒点,等你发过来几个之后,我再一次性回复你, 发送方呢,也想等到一定量之后,一次性发给你, 这就引申出来一个: 滑动窗口控制

应用层

 我们平时用到了各种的应用程序, 有网页,还有邮箱等等.

所以来的数据,就是五花八门的,必须得事先规定好格式,否则根本无法解读 . 简单理解应用层的作用,就是规定应用程序的数据格式

最高层,直接面对用户

应用层就包括了我们需要的应用程序.同时还有应用层协议, 有了这些协议,我们就可以通过不同的协议来使用网络. 比如上面说的发邮件,就用专门的协议:SMTP 和POP3.

这里简单讲几个常用的应用层协议

我们每次访问什么网站首页的时候,都是在浏览器中直接输入域名,比如baidu.com. 而不是输入网站的ip. 这个有了一个熟悉的DNS解析.

域名系统DNS

顶级域名有3类: 国家顶级域名(cn us hk tw),国际顶级域名(int),通用顶级域名(com).

可能你想知道,ip是怎么和域名连起来的.听我下面慢慢给你讲: 咱们天赋吉运,就是一个域名, 它有一个ip.域名到ip地址的映射

说完常常访问的网址之后, 我们也是离不开各种邮件,现在来大概讲讲邮件

邮件服务器协议有我们常见的smtp,最简单的邮件传输协议啦, 另外就是邮局协议pop 还有一个不熟悉的因特网邮件存取协议IMAP

pop得有一个邮件服务器.咱们现在也有这么一个邮件服务器了

先来简单的讲: smtp 25端口  邮件服务器之间的传输协议

pop3 用户计算机与邮件服务器之间的传输协议.端口110

imap有3种工作方式, 离线: 用户的计算机得和邮件服务器保持连接,然后把邮件都从服务器下载到本地

在线的: 邮件是一直存在邮件服务器中的,然后用户各种操作.删除啊回复啊等等. 但是得一直跟服务器连接着,不能断喽

断连接方式: 收邮件的时候,其实是先在本地来个缓存,当用户编辑的差不多了,要发送时,再去连接邮件服务器,同时把两方的邮件状态保持一致.我觉得是介于上面两个中间的.

后面还有我们平时输入域名, 最前面默认给加上的http 和 www .http是应用层的协议之一.资源标示是它的核心.url 这个咱们太常见了, 跳转页面啥的. 

还有之前我.net项目常用的ftp,可以临时性充当文件服务器.它可以直接匿名登录, anonymous 所以从某种程度上讲,不太安全.

小结

两个电脑如何通信呢, 就是A 给B 发一个数据包, B收到了,给A回一个数据包,就建立起来了.

A 想找B ,首先A 给通上点,插上网线, 然后能知道B的ip和mac A和B 可能不在一个子网络里,比如A在中国, B在美国.这样A 就不知道B的mac地址了, 就有这么一个网关,网关能知道B的mac地址的.  那B 的ip呢. 一般我们直接连网之后, 大家直接看ip属性,能看出来,给自动分配了. 所以B要连网,得有这么几个参数: 本机ip 子网掩码,网关ip dns的ip地址

现在B能连网了,想打开百度时,先输入的www.baidu.com 然后dns协议,把这个网址给转成了ip地址. dns服务告诉B 要访问的ip地址是多少. 所以B就知道了百度的ip了.  下面想判断,这个ip是不是在同一个子网络, 就得用到子网掩码了.

浏览器页面用的http协议.

http部分内容,是嵌入tcp数据包中的. tcp数据包再嵌入ip数据包, ip数据包需要设置双方的ip,上面双方的ip我们已经知道了. ip数据包是嵌入以太网数据包中的.以太网数据包需要知道双方的mac地址,上面咱们也知道啦.所以通信达成啦

猜你喜欢

转载自blog.csdn.net/kwy15732621629/article/details/79466892