学习笔记-网络协议

按照最通俗易懂的方式写的这篇文章,有自己写的,也要摘用的别人的。
如有错误,欢迎指出(检查了很多次,感觉应该没有什么大错误)

一、什么是网络协议

大意为一种网络中的规则。
标准解释为:它是计算机网络中进行数据交换而建立的规则、标准或约定的集合,它规定了通信时信息必须采用的格式和这些格式所代表的意义。网络协议使网络上各种设备能够相互交换信息。
网络中存在着许多协议,接收方和发送方使用的协议必须一致,否则一方将无法识别另一方发出的信息。而 TCP/IP协议就是一种常见的协议,Internet 上的计算机使用的就是该协议。

二、名词解释

域名、网站(URL):
例如www.4399.com 这一串字母、数字和点的组成,就是它的域名,而4399所在的包含了很多功能的页面,则是它的网站。
好比域名是你的名字,而网站是你这个人。
域名必须经过域名解析之后(也就是将域名与网站的IP地址建立对应连接关系),这个域名才可以成为一个网址,也就是说网址是可以直接访问网站使用的,网址不一定只是首页网址,也可以是任何一个内容页面的网址。
域名的组成:
当访问网站时,一个完整的域名由传输协议、网络名、域名主体和域名后缀四个部分组成:
在这里插入图片描述

●网络名(网络名+域名主体+域名后缀为三级域名):
www 一般是主站或者 PC 站的网络名,m、wap 一般是移动站的网络名。例如,C语言中文网的移动站的域名是 http://m.biancheng.net/
很久以前,Internet提供的主要服务有万维网(WWW)、文件传输(FTP)、电子邮件(E-mail)、远程登录(Telnet)等。说白了,那个时候的www(World Wide Web)是标识这是一个需要你用浏览器来访问的网页服务,而不是需要你用telnet访问的bbs,或者ftp工具访问的文件传输服务。所以那个时候,网站主页的域名前面要用www。
●域名主体(域名主体+域名后缀为二级域名):
也就是域名的名字,相同后缀的域名主体不能重复。
●域名后缀(顶级域名):
在这里插入图片描述

MAC地址:
由生产厂家在生产时固化在网络硬件中,是硬件预留的地址。
IP地址:
它是互联网协议特有的一种地址,它是 IP 协议提供的一种统一的地址格式。IP 地址为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
在单个局域网网段中,计算机与计算机之间可以使用网络访问层提供的 MAC 地址进行通信。如果在路由式网络中,计算机之间进行通信就不能利用 MAC 地址实现数据传输了:因为 MAC 地址不能跨路由接口运行;即使强行实现跨越,使用 MAC 地址传输数据也是非常麻烦的。
这是由于内置在网卡里的固定 MAC 地址不能在地址空间上引入逻辑结构,使其无法具备真正的地址来表示国家、省、市、区、街道、路、号这类层次。因此,要进行数据传输,必须使用一种逻辑化、层次化的寻址方案对网络进行组织,这就是 IP 地址。
我们通常说的IP地址都是指的IPv4。
IP地址在局域网内是唯一的,若是用的公网,也得是唯一的。
子网、子网掩码:
子网:一个IP网络分成几个小IP网络即子网,就是范围相对较小的IP网络。
(局域网和地区有直接关系。
子网和IP地址范围有直接关系。IP地址范围的划分与地区、实际设备没有直接关系,整个中国的IP地址范围可以是世界IP地址范围内的一个子网,一台电脑只用一个IP地址可以是几个IP地址范围内的一个子网。)
子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。
网关:
网关(Gateway)就是一个网络连接到另一个网络的“关口”。
网关实质上是一个网络通向其他网络的IP地址(主机与主机之间有IP地址的区别,网络与网络之间也有IP地址的区别)。
什么是默认网关?
默认网关必须是主机自己所在的网段中的IP地址,而不能填写其他网段中的IP地址。就好像一个房间可以有多扇门一样,一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。
网关是默认的数据出口。如果你的数据不知道往哪里走的话,那么他会去默认网关那里报道。
DNS:
DNS 是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的,又名“域名解析服务器”。作用是将域名翻译成ip地址(机器只能读取ip地址)。
端口:
●硬件端口:
CPU通过接口寄存器或特定电路与外设进行数据传送,这些寄存器或特定电路称之为端口。
例如键盘鼠标的接口,打印机的接口,USB接口等,都是端口。
●网络端口(port):
逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。
端口号不可重复。
在这里插入图片描述

HTTP:
超文本传输协议。是一个基于TCP/IP通信协议来传递数据的协议,允许传递任何类型的数据对象。
http协议支持客户端/服务端模式,也是一种请求/响应模式的协议(http协议永远都是客户端发起请求浏览器进行响应)。
http协议是整个Web应用的基础。
默认端口为80。
HTTPS:
由于http都是明文传输,包括账号密码,都是可以被抓取到的,所以并不安全,于是便产生了https协议(HTTP+SSL/TLS)。
实际使用中,绝大数的网站现在都采用的是https协议,这也是未来互联网发展的趋势。
相比于http,https要安全得多。
默认端口为443。
FTP:
FTP(文件传输协议),他允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。
FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。

三、软件、程序、进程、线程之间的关系

软件: 软件 = 程序+文档 = 数据结构+算法+文档 。例如QQ、飞书、Word、谷歌浏览器等就是软件。
程序: 程序是静态的,由代码组成。例如第一个程序HelloWorld,Windows自带的计算器也是一个程序。
进程: 进程是动态的,是程序的一次执行过程。我用浏览器打开了一个音乐网站,这是一个进程。我又打开了一个电影网站,这又是一个进程。进程是不做事的,他都是指挥线程做事,也就是说,一个进程至少有一个线程。
线程: 线程是进程的一个实体,是CPU运行调度的基本单位,它是比进程更小的能独立运行的基本单位。一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃会导致整个进程都死掉。所以多进程比多线程健壮。(一列火车上某一节车厢着火,整列火车都受到影响,但是一列火车上着火不会影响另外一辆火车)

四、TCP/IP 协议

1.TCP/IP协议是什么:
TCP/IP 协议是 Internet 网络的基础协议,它不是一个协议,而是一个协议族的统称,因此,有时也称 TCP/IP 为网际协议群。
具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。
在这里插入图片描述

2.TCP/IP 协议层次结构:
在这里插入图片描述

五、OSI 协议层次

也叫OSI七层模型。它定义了不同计算机互连的标准,目的是使世界范围内的各种计算机互连起来,构成一个网络。
在这里插入图片描述
在这里插入图片描述

7.应用层:
该层是面向用户的。
应用层的作用:
直接和应用程序接口并提供常见的网络应用服务。
我们开发的应用软件,就处于这一层。比如,QQ,浏览器访问网页,等等你看得到的应用软件都是在这一层,但是这些软件在运行的过程中,也需要依靠一些特定的协议才能完成相应的功能。
(好比你进了快递站,你是用户,快递站就处于应用层)
6.表示层:
表示层的作用:
将应用层的信息转换为适合网络传输的格式, 或将来自下一层的数据转换为上一层能够处理的格式,因此它主要负责数据格式的转换。如编码、加密和压缩,以便使用相同表示层协议的计算机能互相识别数据。
例如A电脑用浏览器浏览网站B,在网站B里有一张gif图片,但是B电脑无法识别gif格式的图片,于是在A电脑的浏览器里应该显示这张gif图片的地方会显示为叉叉。
表示层会检查电脑中是否有能识别该gif图片的解码工具,如果有,则将gif图片展现在相应的应用程序中;如果没有,则提示打不开,或显示出一堆乱码。
(不是什么东西都能邮寄的,快递站总得把你寄的东西转成能运输的格式)
5.会话层:
会话层的作用:
服务于应用程序(例如QQ)
1.建立会话;
2.保持会话;
3.断开会话。
4.传输层:
举个栗子:
蔡徐村要举办篮球比赛,于是我买了两个篮球准备练习。
快递还在运输时,我突然觉得两个篮球不够用,于是又多买了3个。
然而到最后我却发现,第一次买的篮球我确实收到了,但第二次买的篮球我只收到了一个,这是怎么回事?
于是我去询问客服,客服告诉我说,我第一次买的时候,他们采用的是TCP的方式传输,TCP能够保证我准确无误的收到我要的东西,如果有东西没有收到,我给个回应,他们会将我没有收到的东西再发一次。并且如果我收到的东西发现是错的,我可以直接丢弃,他们也会再发一次。
而第二次买的时候,他们采用的是UDP的方式传输,这种运输方式速度很快,省略了TCP的很多步骤,但是并不能保证我收到了所有的东西。
传输层的作用:
1.提供端到端的服务,即应用进程之间的通信;
2.网络层协议提供不可靠、无连接和尽力投递的服务,因此,如果对于可靠性要求很高的上层协议,就需要在传输层实现可靠性的保障;
3.单位:段。
该层会涉及到两个协议,TCP协议与UDP协议。
TCP是我要保证你完整收到,比如文件的传输,少一部分你就没法使用。
UDP是我只管发,不保证你能收到,比如在线视频,实时游戏。有东西没接收到,也就是卡一下,但并不会有特别大的影响。
3.网络层:
举个栗子:
由于篮球比赛迫在眉睫,所以我练习地非常刻苦,很快,5个篮球都被我打坏了,于是我又买了5个不同的篮球。
这次商家选择了正确的传输协议,也就是TCP协议,以此来保证我能正确的收到我需要的物品。
将快递包好后,快递却迟迟没有发出,我去询问客服,为什么还不发快递?客服告诉我说,我忘了填我在蔡徐村的个人村号,他们找不到我,就不知道把快递发到哪里。
蔡徐村就好比一个局域网,而个人村号就相当于我的IP,我的个人村号在蔡徐村是唯一的,就像IP地址在局域网内也是唯一的一样。
于是我告诉了他们我的个人村号,他们将我的个人村号写好,并贴在了快递盒上(添加了一个IP头)。
不同村庄的村号开头不一样,比如A村的村号为A,B村的开头为B。有了村号,就能先找到村子,找到村子后,剩下的事就不归他管了(将 IP 地址为 192.168.0 开头的全部发送给到路由器,之后再怎么转发,交给它!)。
不仅如此,他们还为这次的运输规划了更优的路线,效率更高。
网络层的作用:
提供点到点的连接
简单来说就是“路由”和“寻址”,相当于一个地图或导航
1.负责将数据传输到目标地址;
2.选择传输数据的最佳路径;
3.逻辑寻址和路径选择;
4.单位:包;
5.相关设备:路由器。
解释一些端到端和点到点:
端到端的服务(即进程与进程之间的通信)(你比如你要将数据从A传送到E,中间可能经过A→B→C→D→E,对于传输层来说他并不知道b,c,d的存在,他只认为我的报文数据是从a直接到e的,这就叫做端到端,它是比点到点通信更高一级的通信方式,完成应用进程之间的通信。总之,一句话概括就是端到端是由无数的点到点实现和组成的。)
2.数据链路层:
又过了三天,我心想篮球应该快到了吧,结果一看快递,居然还没发货?
我怒气冲冲的去质问客服,结果客服告诉我,我虽然填了我的个人村号,但还没填写我的收货地址,他们不知道该将快递送到哪个地方去。
个人村号在不同的村庄是可变的,甚至在同一个村庄也是可变的,只要不重复就行。
但是收货地址是绝对的,在这个地方,那就是这个地方。
IP地址更改,只要保证不重复。
MAC地址则像是收获地址,是绝对的。
于是我将我的收获地址告知,服务人员将收货地址写好,贴在了快递盒上(添加了一个MAC头)
快递即将发出,客服告诉我,快递车的车牌号为AE86。
客服还说,他们的服务会非常周到,等会快递会依次发出。并且告诉我,等快递发出后,在快递的运输过程中,还会询问我,以帮我检查五个篮球是否发正确。于是我又给了一个好评。
数据链路层的作用:
相当于是在给网络层提供服务
1.定义了如何让格式化数据进行传输;
2.寻址(MAC地址(物理地址));
3.错误检测或纠错(检测方式类似于:一个小孩子学数数,从1到10,他一个一个数字的数,说一个,然后你点头说对,然后他又继续往下数。你的点头就是确认信号。没点头,就继续数该数的正确数字,直到你点头。)
4.打包成帧:根据以太网协议将一组电信号组成一个数据包,称作“帧”,并控制它的传输;
5.相关设备:交换机,网桥。
关于第3点的解释:
数据链路层的发送方,在将一帧(Frame)数据送到物理线路上时,为了让物理线路的另一端的接收方,检查信号数据是否在线路上受噪音干扰而误差,通常会将整帧的数据做一次校验,生成一个CRC校验码 ,附在一帧数据的末尾。
而接收的一端,一旦接收到数据时,别的先不干,先计算接收数据的校验码,至于算法和发送端使用的是一样的算法,如果本地计算的校验码与接收的校验码相同,恭喜,数据没有发生错误(概率99.9999%),可以接收。 如果不一样,那数据100%发生了错误,此时怎么办? 丢!
那能否纠错(Correct Error)?丢了多浪费啊!不能!为何? 因为传输的数据本身、以及校验码对数据没有提供冗余(Redundancy),接收方无法根据校验码把数据恢复(Restore)出来。
1.物理层:
在进行了大量的练习之后,我终于把我的嗓子喊坏了。
眼看篮球比赛的日子就要来临,怎么办?
我只能在网上购买润喉水。
这次的运输没出什么意外,很快我就拿到了包裹。
然而,当我打开包裹后,却发现这根本不是什么润喉水,而是一片一片的药片,这是怎么回事?
于是我去质问客服,客服说,液体是不能装在快递盒里运输的(根据故事编的规则,事实如何我不知道-.-,各位看官别信),他们只能发药片,等快递到手后,再将药片泡成润喉水,才能喝。
我没听懂他什么意思,于是他跟我举例:
“比如OSI七层模型中的物理层,它可以用来传输比特流(也就是电流),传输方法是将数据1、0 转化为电流强弱来进行传输,到达目的地后再转化为 1、0。润喉水就和数据一样,是不能直接传输的,数据必须转换成电流才能进行传输。”
我瞬间就明白了,早这么解释不就行了吗。于是我给了他一个好评。
物理层的作用:
1.定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等;
2.传输比特流(电流)(就是由 1、0 转化为电流强弱来进行传输,到达目的地后在转化为 1、0,也就是我们常说的数模转换与模数转换);
3.单位:比特;
4.相关设备:集线器、中继器。
●两个主机的通信过程:
从发送者(以下简称A)到接收者(以下简称B),属于从7层(应用层)->1层(物理层)封装,然后传输到远端,再从1层(物理层)->7层(应用层)解封装的过程。

●数据的封装:
在这里插入图片描述

●一个网络结构和各种设备的教程
https://mp.weixin.qq.com/s/jiPMUk6zUdOY6eKxAjNDbQ
这篇讲的很好,里面唯一解释错的就是以太网。
以太网是一种计算机局域网“技术”,而不是文中所说的“网络”。

六、OSI 和TCP/IP 的对应关系和协议

OSI七层模型是理论上的分层方式,而四层模型是实践过程中的分层模型。
OSI七层模型ISO(国际标准化组织)提出的一套理论性的网络标准化协议,可以把它看成一本教科书,它在指定之前是没有经过实践的,而为什么我们实践的过程中又没有遵循OSI的标准来分层呢,是因为我们在实践的过程中发现有些功能不必要分得那么细,而TCP四层模型就是我们实践过程中发现比较合理的分层,虽然我们实际过程中都没有按OSI分为七层,但是OSI对我们实践过程分层有着指导性的意义。
在这里插入图片描述

telnet协议(用小写字母书写): 可以让你连接到远程计算机,就像你坐在电脑前一样工作,无论你有多远。默认情况下,telnet不会加密通过网络发送的数据,因此请谨慎使用!
SMTP协议: 简单邮件传输协议。它是Internet电子邮件的协议。它在计算机之间传输电子邮件。
ARP协议: 负责通过IP地址解析出MAC地址。

七、TCP三次握手与四次挥手

传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在 TCP 协议中,通过三次握手建立连接。通信结束后,还需要断开连接。如果在发送数据包时,没有正确被发送到目的地时,将会重新发送数据包。
TCP的行为是:
①A:“坤坤,听得见吗?我有事说。”
②B:“听得见,你说吧。”
③A:“我有一个篮球梦……”
如果要说很多次话,则②就变为了“知道了,还有别的事吗?”然后再继续③。
如果话说完了,后面的流程就变成了
③A:“我没有要说的了。”
④B:“好的。那我等会就不听了。”A:“好的。”
⑤B:“那我就不听了。”
⑥A:“那我也不说了。”
而UDP的行为是:
A:“坤坤,我有一个篮球梦……”

TCP三次握手:
TCP 应用在发送数据前,通过 TCP 协议跟通信对方协商好连接信息,建立起TCP的连接关系。
TCP 三次握手,其实就是建立一个 TCP 连接。客户端与服务器交互需要 3 个数据包。握手的主要作用就是为了确认双方的接收和发送能力是否正常,初始序列号,交换窗口大小以及 MSS 等信息。

  • 第一次握手:客户端发送 SYN 报文,并进入 SYN_SENT 状态,等待服务器的确认;
  • 第二次握手:服务器收到 SYN 报文,需要给客户端发送 ACK 确认报文,同时服务器也要向客户端发送一个 SYN 报文,所以也就是向客户端发送 SYN + ACK 报文,此时服务器进入 SYN_RCVD 状态;
  • 第三次握手:客户端收到 SYN + ACK 报文,向服务器发送确认包,客户端进入 ESTABLISHED 状态。待服务器收到客户端发送的 ACK 包也会进入 ESTABLISHED 状态,完成三次握手。
    在这里插入图片描述

TCP四次挥手:
当我们的应用程序不需要数据通信了,就会发起断开 TCP 连接。建立一个连接需要三次握手,而终止一个连接需要经过四次挥手。

  • 第一次挥手。客户端发起 FIN 包(FIN = 1),客户端进入 FIN_WAIT_1 状态。TCP 规定,即使 FIN 包不携带数据,也要消耗一个序号。
  • 第二次挥手。服务器端收到 FIN 包,发出确认包 ACK(ack = u + 1),并带上自己的序号 seq=v,服务器端进入了 CLOSE_WAIT 状态。这个时候客户端已经没有数据要发送了,不过服务器端有数据发送的话,客户端依然需要接收。客户端接收到服务器端发送的 ACK 后,进入了 FIN_WAIT_2 状态。
  • 第三次挥手。服务器端数据发送完毕后,向客户端发送 FIN 包(seq=w ack=u+1),半连接状态下服务器可能又发送了一些数据,假设发送 seq 为 w。服务器此时进入了 LAST_ACK 状态。
  • 第四次挥手。客户端收到服务器的 FIN 包后,发出确认包(ACK=1,ack=w+1),此时客户端就进入了 TIME_WAIT 状态。注意此时 TCP 连接还没有释放,必须经过 2*MSL 后,才进入 CLOSED 状态。而服务器端收到客户端的确认包 ACK 后就进入了 CLOSED 状态,可以看出服务器端结束 TCP 连接的时间要比客户端早一些。
    在这里插入图片描述

三次握手
在这里插入图片描述

目的:
第一次握手:客服端发起请求
第二次握手:服务器 确认自己收到请求 & 发送正常
第三次握手:客户端 确认自己发起请求 & 收到回复正常
注意:
三次握手时,第一次和第二次绝对不能携带数据,第三次可以携带数据
也就是说,第三次握手相当于已经进行交互

交互
在这里插入图片描述

目的:
1:客户端发送请求
2:服务器收到请求并且回复
3:客户端收到服务器回复
如果客户端收到服务器回复 错误 继续进行下一次交互

四次挥手
在这里插入图片描述

目的:
第一次:客户端确认自己无请求并告知服务器
第二次:服务器回复客户端收到
第三次:服务器确定无遗留数据传输并告知客户端
第四次:客户端收到服务器确认并断开连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值