java学习之路

JavaGuide知识点整理——计算机网络常见知识点

2022-09-05  本文已影响0人  唯有努力不欺人丶

OSI七层模型是什么?每一层的作用是什么?

首先要明确七层模型是一个理论上的分层,是抽象的模型体,并没有实际的实现。下面是简单的理解。

  1. 物理层
    物理层的作用是提供了网络的双向通讯,为双向传输提供了有保障的通路。其中定义了四个统一特性:电气特性,机械特性,功能特性,规程特性。
  2. 数据链路层
    交换机就是工作在二层数据链路曾,链路层主要有三个功能:
    • 提供了通讯过程中用到的mac地址。计算机通讯过程中一共要用到两个地址:一个是物理mac地址,一个是逻辑ip地址。 mac地址就是数据链路层提供的。其实就是我们的网卡地址。
    • 负责数据帧转发。数据链路层传输的数据被称为数据帧
    • 提供错误检测机制。只能发现问题但不能纠正。
  3. 网络层
    路由器工作在网络层。网络层一共有四个功能:
    • 提供逻辑ip地址
    • 连接不同的媒介类型(内网和外网),使不同的媒介之间可以相互通信。
    • 根据路由器运行的不同路由协议选择最佳路径
    • 在选好的最佳路径上负责路由数据包
  4. 传输层
    传输层的功能是提供了端口号码的概念。
  5. 会话层
    会话层的作用是负责在应用程序之间建立,维护并解除会话连接
  6. 表示层
    表示层的作用是负责数据加密,提供了四种常见的加密方式:
    1. 对称加密:加密方式和揭秘方式使用相同的密钥
    2. 非对称加密:一把私钥,N个公钥
    3. hash 256加密
    4. 光密
  7. 应用层
    给用户和抽象的网络之间提供一个接口,使得用户可以通过使用应用程序,app,来使用整个6层网络模型。

TCP/IP四层模型是什么?每一层的作用是什么?

osi七层模型与tcp/ip四层模型对应关系

上面说到了osi七层模型是一种很理论上的东西,而它落地的实现之一就有tcp/ip四层模型。当然了这种模型感觉是翻译过来的,所以中文名会略有不同,我看到了好多种叫法,但是主要作用是不变的,而且不同名称也类似。我这里用的是一种比较常见的译法:

TCP协议就是一个传输协议,包括下面几个特性:
1.需要三次握手建立连接,四次挥手断开连接
2. 面向流的处理,可以一个个字节的方式接收数据,然后把这些数据组成数据段,发给网际层
3. 对数据发送进行流量控制,避免发送和接收方因为缓存写满造成数据丢失。
4. 对数据进行校验,分段的数据有重排序功能,对错误和丢失的数据有重发机制。
还有一个类似TCP的协议是UDP,UPD不面向连接,错误检测机制不如TCP,也不进行流量控制。但是就因为校验少,所以性能比TCP好。如果不重视数据校验更重视性能的话,可以用UDP。

为什么网络要分层?

可以使得每一层的功能明确,并且各层之间独立,增加了每一层的灵活性。简单来讲分层的优点如下:

  1. 各层之间独立,把复杂的问题分解为若干个比较容易处理的更小一些的问题。
  2. 灵活性好,任意一层发生变化时(例如技术变化),只需要层间接口关系保持不变,整体都不受影响。
  3. 某层提供的服务不需要时可以直接取消。
  4. 结构上可分割开,各层都采用最合适的技术来实现。
  5. 易于实现和维护。
  6. 促进标准化和流程化。

应用层有哪些常见的协议?

HTTP:超文本传输协议

超文本传输协议主要是为web浏览器与web服务器之间的通信而设计的。当我们使用浏览器浏览网页的时候,我们的网页就是通过http请求进行加载的,过程如下:

image.png
http协议是基于tcp协议,发送http请求之前首先要建立tcp连接也就是要经历三次握手,目前使用的http协议大部分都是1.1,在1.1的协议里面默认开启了keep-Alive,这样建立的连接可以多次在请求中被复用。
另外http协议是无状态协议,它无法记录客户端用户的状态,一般我们都是通过Session来记录客户端用户的状态。

SMTP:简单邮件传输(发送)协议

简单邮件传输(发送)协议基于TCP协议,用来发送电子邮件。
注意:接收邮件的协议不是SMTP而是POP3协议。
电子邮件的发送过程如下(比如我是163邮箱发送给qq邮箱):

  1. 通过SMTP协议将写好的邮件交给163邮箱服务器。
  2. 163邮箱服务器发现我发的是 qq邮箱。它使用SMTP协议将邮件转发到qq邮箱服务器
  3. qq邮箱服务器接受邮件后,通知收件邮箱来收邮件(用户通过POP3/IMAP协议将邮件取出)

如何判断邮箱是真正存在的?

  1. 查找邮箱域名对应的SMTP服务器地址
  2. 尝试与服务器建立连接
  3. 连接成功后尝试想需要验证的邮箱发送邮件
  4. 根据返回结果判定邮箱地址的真实性

POP3/IMAP邮件接收的协议

这两个没必要阐述,只要了解都是负责邮件接收的协议即可。不要和SMTP协议搞混了。SMTP协议负责邮件的发送,POP3/IMAP负责邮件的接收。

FTP文件传输协议

FTP协议主要提供文件传输服务。基于TCP实现可靠的传输。使用FTP传输文件的好处是可以屏蔽操作系统和文件存储方式。
FTP是基于客户-服务器模型而设计的,在客户端与FTP服务器之间建立两个连接。如果我们要基于FTP协议开发一个文件传输的软件的话,需要高清FTP的原理。
FTP的独特的优势同时也是其它客户服务器程序最大的不同点在于:它在两台通信的主机之间使用了两条TCP连接(其它客户服务器应用程序一般只有一条TCP连接)

  1. 控制连接:用于传输控制信息(命令和响应)
  2. 数据连接:用于数据传送

这种将命令和数据分开传送的思想大大提高了FTP的效率。


FTP文件传输

Telnet 远程登陆协议

Telnet协议通过一个终端登录到其它服务器,建立在可靠的传输协议TCP之上,Telnet协议最大的缺点之一是所有数据(包括用户名和密码)都是以明文形式发送,有潜在安全风险。这也是Telnet很少使用并被称为SSH的非常安全的协议所取代的主要原因

SSH:安全的网络传输协议

SSH是目前比较可靠,专为远程登陆会话和其它网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH建立在可靠的传输协议TCP之上。
Telnet和SSH之间主要区别在于SSH协议会对传输的数据进行加密保证数据安全性。

TCP与UDP

TCP与UDP的区别

  1. 是否面向连接:UDP在传输数据之前不需要先建立连接。而TCP提供面向连接的服务。在传输数据之前必须先建立连接,数据传送结束后要释放连接。
  2. 是否可靠传输:收到UDP报文后不需要给出确认,也不保证数据不丢失,不保证是否顺序送达。TCP提供可靠传输服务,传递数据前会三次握手建立连接,传递数据时有确认,窗口,重传,拥塞控制机制。通过TCP连接传输的数据无差错不丢失不重复且按顺序送达。
  3. 是否有状态:TCP传输是有状态的,比如TCP会记录自己发送消息的状态,是否发送了,是否被接收了等。为此TCP需要维护复杂的连接状态表。而UDP是无状态的,发出去就不管了。
  4. 传输效率:因为TCP多了很多机制,所以效率比UDP低。
  5. 传输形式:TCP的面向字节流的,UDP是面向报文的
  6. 首部开销:TCP首部开销20-60字节。UDP首部开销8字节
  7. 是否提供广播或者多播服务:TCP只支持点对点,UDP支持1对1,1对多,多对多。

其实根据上面的特点我们能看出来两个协议重点不一样。TCP更在意准确性从而牺牲了性能,我们可以在准确性要求高的场景使用。比如文件传输,发送和接收文件等。
而UDP则更在意性能而牺牲了准确性,在语音视频的时候使用,丢失几帧的没关系的。
HTTP协议是基于TCP协议的。

使用TCP和UDP的协议分别有哪些?

运行于TCP协议之上的协议:

  1. HTTP协议
  2. HTTPS协议:更安全的超文本传输协议,身披SSH外衣的HTTP协议
  3. FTP协议
  4. SMTP协议
  5. POP3/IMAP协议
  6. Telnet协议
  7. SSH协议

运行于UDP协议之上的协议:

  1. DHCP协议:动态主机配置协议,动态配置IP协议
  2. DNS:域名系统将人类可读的域名转化为机器可读的IP地址。我们可以理解其为转为互联网设计的电话本,实际上DNS同时支持UDP和TCP协议。

TCP三次握手和四次挥手

这个网上很多教程,我这里也不用官方语言讲了,用白话大概说下:
TCP建立连接的时候三次握手(先确定发起方是客户端):

三次握手完成后才正式开始传送数据。
TCP断开连接四次挥手(任意一方都可以主动关闭连接):

在浏览器中输入url显示主页的过程

总的来说分为下面几个过程:

  1. 浏览器查找域名的ip地址(DNS解析)
  2. 浏览器向web服务器发送一个http请求
  3. 服务器处理请求
  4. 服务器发回HTML响应
  5. 浏览器显示HTML。

HTTP状态码有哪些?

HTTP状态码类别

HTTP和HTTPS有什么区别?

  1. 端口号:HTTP默认80,HTTPS默认443
  2. URL前缀:HTTP的前缀是http://,HTTPS的前缀是https://
  3. 安全性和资源消耗:http协议运行在TCP之上,所传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS运行在TCP之上。所传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。所以说我们可以理解为:HTTPS是加了一层的HTTP。所以HTTP性能比HTTPS好,但是安全性没有HTTPS高。

HTTP1.0和HTTP1.1的区别

  1. 连接方式:1.0为短链接,1.1支持长连接
  2. 状态响应码:1.1中添加了大量的状态码。
  3. 缓存处理:1.0中主要使用header里的 If-Modified-Since,Expires来作为缓存判断标准,1.1引入了更多的缓存控制策略。
  4. 带宽优化以及网络连接的使用:1.1支持断点续传。在请求头中引入了range头域,允许只请求资源的某个部分。

HTTP是不保存状态的协议,如何保存用户状态?

http是一种不保存状态,即无状态的协议。也就是说http协议自身不对请求和响应之间的通信状态进行保存。那么我们如何保存用户状态呢?
session机制解决了这个问题。服务端给特定的用户创建特定的session之后就可以标识这个用户并跟踪这个用户了。

Cookie和Session的区别?

其实两者最大的区别就是Cookie是保存在客户端(浏览器端),而Sission数据保存在服务器端。

URI和URL的区别

本篇笔记就记到这里,如果稍微帮到你了记得点个喜欢点个关注,这篇笔记是东拼西凑出来的知识点,比较杂,如果哪里写的有问题欢迎支持,也祝大家工作顺顺利利!

上一篇 下一篇

猜你喜欢

热点阅读