计网部分笔记

大一菜鸡的个人笔记,欢迎指点和交流。

计算机网络

OSI参考模型

应用层

所有能产生网络流量的程序

如QQ等

表示层

解决传输时是否要压缩或加密与解密等问题

图像传输之前是使用二进制还是ascii码

使用何种编码模式也是表示层的问题。

会话层

​ 输入网址,访问网站,就要建立一个会话。

网页的前进快退,都是需要和服务器进行交互。

​ 网页信息传完了,一定时间没刷新,会话就被释放了。

会话可以通过命令行命令 netstat -n查看

木马程序,不管怎么隐藏,都必须建立会话,都可以被我们查到建立的会话。

传输层

​ 可靠传输:当某一部分数据未成功传输至客户端,服务端会重新发送。

​ 流量传输:如果客户端处理不够及时,会给服务端发送信号让服务端控制发送速度。

​ 不可靠传输:客户端发送数据包向DNS服务器询问搜狐网站的IP,服务端发送数据包回应。这是不需要会话的服务。

​ 传输层也有对数据纠错的功能。检查数据是数据链路层的功能。

网络层

​ 负责选择最佳路径 规划ip地址
在这里插入图片描述

数据链路层

​ 帧的开始和结束

​ 辨认帧头和帧尾

​ 实现透明传输:去除中间接收的转移的位

数据链路层可以检查错误,但不纠错。纠错是传输层的功能

物理层

​ 网线水晶头等的接口标准,电气标准。

层间关系

​ 一层的改变不会导致其他层的改变,但层与层之间有联系和交互。

​ 物理层为链路层服务,链路层为网络层服务…应用层。

各层的实例

找施工队,部署网线更换通讯介质,是物理层。

​ 升级交换机,升级网速,是数据链路层。

​ 划分网段,虚拟局域网,网络层。

​ 网页的服务器访问调整,是应用层。

网络排错

​ 应从底层往高层查。(底层指物理层->数据链路层…)

​ 如网页打不开了,(物理层)先看网线是否完好,看看发送的包和接受的包,如果发送了包而接收不到包,可能是网线的水晶头接触不良等问题。(网络链路层)再看看是否修改了mac地址,宽带是否欠费(堵塞链路层),或网速是否符合交换机要求,或计算机连接到错误的VLAN(网络层)看看网段是否符合,计算机是否配置了网关,是否配置了错误的IP地址,子网掩码,路由器上没有配置到达目标网络的路由。(如果把网络层往上都看作是应用层)应用程序配置错误,

网络安全

  • 物理层安全:把不用的网线拔掉或把端口shutdown.
  • 数据链路层安全:账号密码 VLAN 交换机端口绑定MAC地址
  • 网络层安全:在路由器上使用ACL控制数据包流量
  • 应用层(网络层以上)安全:开发的应用程序没漏洞。

TCP/IP协议和OSI参考模型

在这里插入图片描述

  • TCP是进行可靠传输的,UDP是进行不可靠传输的。
  • ARP给IP提供服务,IP给ICMP和IGMP提供服务
  • Ethernet ATM Frame Relay属于网络接口层

封装和解封的过程

​ 应用层接收的数据太大,没办法直接传输。传输层负责把数据分段、编号,网络层负责写地址,加上目标mac地址和原mac地址路由器根据IP地址选择路径。传输到客户端之后,添加的mac地址和ip地址要去掉,序列号也要去掉。

​ 就像收到快递后,快递的包装就没有用了。去之不用。
在这里插入图片描述
数据链路层会检验5个材料是否充足:MAC头 IP TCP 上层数据 FCS 不够的话就不接收了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

​ 客户端发起请求,服务器发送数据,这个过程是通过网络的封装,通过网线传输,对于应用程序来说,是透明的,也就是说,应用程序是不知道走过了多少个逻辑,选择了什么路径。

不可靠协议

​ 不可靠的无连接数据报协议,虽然不能保证数据的可靠运输,但是开销低,传输速度快,容易拓展。不可靠协议不保证数据被无损传输,甚至传输与否,提供"尽力而为"的交付服务。

可靠协议

与不可靠协议相对

UDP

User Data Protocol 用户数据报协议

- 一个数据包就能完成的数据通讯,就使用UDP,不需要编号,也不需要建立连接,如果收不到,再发一遍。
  • UDP使用最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。
  • UDP是面向报文的。没有拥塞控制,很适合多媒体通信的要求(老师的屏幕投影给学生)。
  • UDP支持一对一,一对多,多对一,多对多的交互通讯。
  • UDP的首部开销小(8个字节)

在这里插入图片描述

在这里插入图片描述

UDP长度指的是UDP用户数据报

网络层的长度指的是IP数据报的长度

检验和=伪首部+目的端口+长度+数据

TCP

Transmission Control Protocol 传输控制协议,是面向连接的传输层协议。

  • 可靠传输,防止丢包导致文件无法打开。
  • TCP协议可以实现流量控制、拥塞控制功能。
  • 每一条TCP连接只能有两个端点(ip地址加端口),TCP连接的端点叫做套接字(socket),每一条TCP连接只能是点对点的(一对一)
  • TCP提供全双工通信,也必须是全双工的。(双向通信,需要发送反馈)
  • 面向字节流,每次把文件块放入TCP缓存的大小没有规律,不一定一样。每次组装数据包的大小也没有规律。读取时也没有规律。

ARQ

Automatic Repeat reQuest 自动重传请求

是通过以下两个原理实现的

停止等待协议

在这里插入图片描述

只要一定时间没确认,就会进行重传。

确认包丢失和确认迟到

在这里插入图片描述

确认包丢了,进行超时重传。丢失重复的数据包

信道利用率

在这里插入图片描述
在这里插入图片描述

流水线传输

在这里插入图片描述

流水线传输是指连续发送多个数据包,期间不停顿。可以有效地提高信道的利用率U

上网、下载都是使用的这种方式。

连续ARQ协议

在这里插入图片描述
确认收到之后窗口会后移

连续ARQ协议使得计算机可进行可靠的流水线传输

累积确认

在这里插入图片描述

可以直接在3发送一个确认 省了两次
在这里插入图片描述

3丢包了 会确认收到了2 然后重发第三个数据包 再发第四个数据包

好处

效率高

坏处

丢包可能会导致不必要的重发

IP

简介

​ Internet Protocol。ip协议是将多个包交换网络连接起来,它在源地址和目的地址之间传送数据包。它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。IP协议在OSI参考模型中应用于网络层,以数据包为单位。IP地址是确认唯一端口号和路由选择的关键,相当于电话号码。IP协议是网络互连的关键

特点

  • IP协议是一种无连接、不可靠的分组传送服务的协议。
  • IP协议是点对点线路的网络层通信协议。IP协议是针对原主机-路由器、路由器-路由器、路由器-目的主机的数据传输的点-点线路的网络层通信协议。
  • IP协议屏蔽了网络在数据链路层、物理层协议与实现技术上的差异:通过IP协议,网络层向传输层提供的是同一的IP分组,传输层不需要考虑互联网在数据链路层、物理层协议与实现技术上的差异,IP协议使得异构网络的互连变得更加容易了。

IPV4和IPV6

IPV:Internet Protocol version 网际协议版本

​ 目前主流IP是基于IPV4的,虽然43亿个IPV4地址在2019年已经分配完毕。目前IPV6还未完全普及。

IPV4为32位,IPV4的IP资源不够大,无法实现互联网身份证。IPV6的出现(64位)使得一个真实用户和一个IP地址一一对应。

HTTP

​ HyperText Transfer Protocol 超文本传输协议

​ 是互联网上应用最为广泛的一种网络协议。所谓的万维网文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方式。

​ HTTP是一个基于TCP/IP通信协议来传输数据(HTML文件,图片文件,查询结果等)。HTTP是一个属于应用层的面向对象的协议。由于其简捷、快速的方式,适合于分布式超媒体信息系统。

​ HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应消息。

Restful设计架构

Representational State Transfer 表述性状态转移

​ 符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。

​ 如果一个架构符合REST的约束条件和原则,就是Restful架构

资源(Resources)

Rest是表现层状态转化,省略了主语:资源 。资源就是网络上的一个实体,或者说一个具体信息。可以用URI(统一资源定位符)指向它。

表现层(Representation)

"资源"是一种信息实体,可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,称为表现层。比如文本可以用txt也可以用html等。

状态转化(State Transfer)

​ 访问一个网站,就代表了客户端和服务器的一个互动过程,这个过程涉及到数据和状态的变化。HTTP协议是一个无状态协议,意味着所有的状态都保存在服务器端。因此如果客户端想要操作服务器,必须让服务器端发送状态转化,而这种转化是建立在表现层之上的,所以是表现层状态转化。

​ 客户端用到的手段,只能是HTTP协议。GET用来获取资源,POST用来新建或更新资源,PUT用来更新资源,DELETE用来删除资源。

Restful综述

  • 每一个URI代表一种资源,URI不应包含动作,但可以包含服务。
  • 客户端与服务端之间,传递这种资源的某种表现层。
  • 客户端通过四种HTTP的动作,对服务器端资源进行操作,实现表现层状态转化。
  • 版本号应放在请求头中的Accept字段。

阻塞IO

​ 最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。

​ 当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就等待,并且阻塞用户线程。当数据就绪之后,内核会将数据拷贝到用户线程,并返回结果给用户线程,解除block状态。

​ 如

data = socket.read();

如果数据没有就绪,就会一直阻塞在read方法。

非阻塞IO

​ 当用户线程发起read操作后,并不需要等待,而是马上得到结果,如果结果为error,线程会继续发送read操作直到内核中的数据准备好了,然后内核会将数据拷贝到用户线程,返回。

​ 所以非阻塞IO模型中,用户线程需要不断地询问内核,会一直占用CPU。

while(true){
	data = socket.read();
	if(data!=error){
	处理数据
	break;
	}
}

猜你喜欢

转载自blog.csdn.net/Rush6666/article/details/107360249