流年似水博客开通了,本站主要是写关于Web和大数据方面内容,正在更新中,欢迎大家光临!
  1. 文章:97 篇
  2. 总浏览:54,603 次
  3. 评论:22条
  4. 最后更新:2020-06-08
  5. 分类目录:39 个

前端都需要懂的网络协议

计算机基础 l, xy 443℃ 0评论


前言

互联网本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层。实际上这个七层是不存在的。没有这七层的概念,只是人为的划分而已。区分出来的目的只是让你明白哪一层是干什么用的。

每一层都运行不同的协议。协议是干什么的,协议就是标准。

网络七层

实际上还有人把它划成五层、四层。
七层划分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
五层划分为:应用层、传输层、网络层、数据链路层、物理层
四层划分为:应用层、传输层、网络层、网络接口层

TCP/IP 分层网络详细介绍

1、物理层

物理层字面理解就是:物理传输、硬件;山东的朋友要发消息给北京的朋友,两人都需要网线、交换机或者无线网络,都得能上网。计算机与计算机之间的通信,必须要有底层物理层方面的连通,就类似于你打电话,中间是不是必须得连电话线。
总的来说,物理层就是用来处理连接网络的硬件部分,控制操作系统,硬件设备的驱动
我们能够看到的交换机、光纤、光线,中间传的是电信号,即010101...这些二进制位。

底层传输的010010101001...这些二级制位怎么才能让它有意义呢?
要让这些010010101001…有意义,最好的方式就是人为分组,8位一组;如果不做分组,那对方的计算机根本就不吃从那一位开始计算,总不能你给他100位,就按照100位计算?这么干就没意义了,所以我们必须要把底层的信号分组,即8位一组,那么每个8位就能得到一个确定的数,这分组的工作物理层是干不了的,这得由数据链路层来做。

2、数据链路层

早期的时候,数据链路层就是来对电信号来做分组的。以前每个公司都有自己的分组方式,非常的乱,后来形成了统一的标准(标准就是协议),即以太网协议Ethernet。
Ethernet:
以太网帧因为历史原因存在多个版本,这里采用IEEE802.3以太网帧格式。

Preamble:前导码,7个字节,用于数据传输过程中的双方发送、接收的速率的同步
SFD:帧开始符,1个字节,表明下一个字节开始是真实数据(目的MAC地址)
dst MAC:目的MAC地址,6个字节,指明帧的接受者
src MAC:源MAC地址,6个字节,指明帧的发送者
Length:长度,2个字节,指明该帧数据字段的长度,但不代表数据字段长度能够达到(2^16)字节
Type:类型,2个字节,指明帧中数据的协议类型,比如常见的IPv4中ip协议采用0x0800
Data and Pad:数据与填充,46~1500个字节,包含了上层协议传递下来的数据,如果加入数据字段后帧长度不够64字节,会在数据字段加入“填充”至达到64字节FCS
FCS:帧校验序列,4个字节,对接收网卡(主要是检测Data and Pad字段)提供判断是否传输错误的一种方法,如果发现错误,丢弃此帧。目前最为流行的用于FCS的算法是循环冗余校验(cyclic redundancy check –CRC)

MAC地址

计算机通信就像写信一样,发送发地址(源地址)是你的mac地址,目标地址是对方的mac地址,你家的路由器就相当于邮局。

MAC地址的由来:
源和目标地址由来:Ethernet规定接入Internet的设备都必须具备网卡,发送端的和接收端的地址便是指网卡的地址,即Mac地址。
每块网卡出厂时都被烧录上一个实际上唯一的Mac地址,长度为48位2进制,通常由12位16进制数表示,(前六位是厂商编码,后六位是流水线号)

mac地址是怎样通信的?举个例子:在一个教室里相当于一个局域网(封闭的空间),小明同学想借小丽同学的笔用,可是俩人距离太远,又不想走动,所以小明就使出了九牛二虎之力,呼喊(吼的形式)小丽,全班人虽然都听到了,但是都不会理他,只有小丽,答复他并且把作业递给他。这里的小丽和小明两个人分别是两台计算机,这时候mac地址为“小明”的要找一个mac地址为“小丽”的计算机,要作业,说着笔的数据属于我,于是就把“小明”MAC地址、“小丽”MAC地址和“小丽的作业”组合成了帧,传输给小明。另外,小明吼,全屋子的人都听见了,这就是广播。
局域网的理解:什么是互联网,互联网就是由一个个局域网组成,局域网内的计算机不管是对内还是对外都是靠吼,这就是数据链路层的工作方式——广播。

那么问题来了,同一个教室的靠吼,那不同教室呢,吼也听不见呀,所以现在数据链路层处理不了了,得网络层出面才可以解决这个问题

在讲网络层之前,还可以考虑一个问题,全世界都靠吼的形式传递数据,理论上也行得通,但是试想一下,全世界都在吼,那这就是个灾难现场啊,所以全世界不能是一个局域网,所以就有了网络层

3、网络层

网络层定义了ip
若小明现在想找隔壁教室老王,但又不认识老王,吼,又听不到,此时只能是找个代表把要给的东西,帮忙带过去,这个代表即是网关(网络关口)。
MAC地址是用来标示在教室的某个位置,ip地址是在哪个教室,要想把东西给老王,至少也得知道人家在哪个教室啊?就像你想访问百度,也得知道百度的ip是多少。计算机在发包前必得知道是在哪个教室,如果在一个教室,基于Mac地址广播发包就行,如果不在一个教室,则需要交给代表(网关)来转发,则ip和mac地址就是互联网中唯一的位置标示。

再来讲一下数据包:
在数据链路层会将网络层的ip和数据包,封装到数据链路层的数据位置,然后再加上自己的包头,然后再发给物理层,物理层再发给网关,网关再找到对方的教室,交给对方的网关,然后在这个教室做广播
在数据链路层封装了两层,经常都会以俄罗斯套娃打比方

最终变成

那现在再考虑一个问题,怎么在吼之前拿到对方的Mac地址呢?这需要用到ARP协议。
ARP协议:小明在问小丽借笔,得先找到小丽的Mac地址。也就是你的计算机要发一个ARP包出去,以广播的形式,ARP发送广播包的形式如下:

局域网中怎么获取对方的Mac地址:
知道对方的ip是必须的,自己MAC和ip也很容易获得。这里的FF:FF:FF:FF:FF:FF并不是真正的这个值,是代表获取对方MAC的方式,假设在本教室广播,吼出去,所有人开始解包,只有IP地址是172.16.10.11的这个人才会返回他的Mac地址,其他人全部丢弃,小丽的MAC地址替换FF…。
跨网络怎么获取对方的Mac地址:
目标ip就变成网关ip
    

这样网关就会把它的Mac地址返回给你,然后正常发包

是网关帮忙找小丽,所以用户是感觉不到的
总结:网络层用来处理网络上流动的数据包,数据包是网络上最小数据单位,该层规定了以怎样的路径到达对方计算机,并把数据包传给对方。
            网络层的作用就是在众多选项中选择一条合适的路径传输。

4、传输层

传输层提供了两种到达目标网络的方式
传输控制协议(TCP):提供了完善的错误控制和流量控制,能够确保数据正常传输,是一个面向连接的协议。
用户数据报协议(UDP):只提供了基本的错误检测,是一个无连接的协议。

特点:

1)UDP

把数据打包
数据大小有限制(64k)
不建立连接
速度快,但可靠性低

2)TCP

建立连接通道
数据大小无限制
速度慢,但是可靠性高
由于传输层涉及的东西比较多,比如端口,Socket等,都是我们做移动开发需要了解的,之后的文章中我们再具体做介绍,这里就不讲解了。

5、应用层

应用层决定了向用户提供服务时的通信活动
TCP/IP协议族预存了各类通用应用服务。
运行在TCP协议上的协议:
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,简单邮件传输协议),用来发送电子邮件。
TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。
SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。
运行在UDP协议上的协议:
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,地址解析协议),用于动态解析以太网硬件的地址。

TCP / IP 协议中数据包

再让我们来看一下整个过程的数据包处理:
在 TCP / IP 协议中数据先由上往下将数据装包,然后由下往上拆包
在装包的时候,每一层都会增加一些信息用于传输,这部分信息就叫报头,当上层的数据到达本层的时候,会将数据加上本层的报头打包在一起,继续往下传递.
这个过程有点像俄罗斯套娃


转载请注明:流年似水 » 前端都需要懂的网络协议

喜欢 (1)or分享 (0)

Warning: copy(https://cn.gravatar.com/avatar/?s=54&d=%2Fwp-content%2Fthemes%2Fyusi1.0%2Fimg%2Fdefault.png&r=g): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /usr/share/nginx/html/timewentby/wp-content/themes/yusi1.0/functions.php on line 239

Warning: copy(/wp-content/themes/yusi1.0/img/default.png): failed to open stream: No such file or directory in /usr/share/nginx/html/timewentby/wp-content/themes/yusi1.0/functions.php on line 243
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址