IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计网面试之重点投简历前的准备 -> 正文阅读

[网络协议]计网面试之重点投简历前的准备

一、概述:

1、七层模型、四层模型和五层模型关系。

在这里插入图片描述

OSI七层协议模型主要是:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。

五层协议中 ,应用层相当于七层协议中的应用层+表示层+会话层。

TCP/IP四层协议中,网络接口层相当于五层协议中的数据链路层+物理层。

2、五层体系结构及其常见端口号分布

五层体系结构包括:应用层、运输层、网络层、数据链路层和物理层。

在这里插入图片描述

3、各层的作用

3.1、物理层:

主要定义物理设备标准,代表设备:网线,集线器

3.2、数据链路层:

定义了如何让格式化数据以进行传输。还提供错误检测和纠正,以确保数据的可靠传输。代表设备:网桥,交换机

3.3、网络层:

在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。代表设备:路由器

3.4、运输层:

定义了一些传输数据的协议和端口号(WWW端口80等),如:
TCP(transmission control protocol –传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据)
UDP(user datagram protocol–用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。

3.5、应用层:

是最靠近用户的OSI层。这一层用户的应用程序提供网络服务

4、2021年实习面试多次碰到的面试题

1、三次握手、四次挥手

2、HTTP返回状态码(301,302,304,404等)

3、GET和POST区别

4、从输入URL到页面加载发生了什么

5、其他同学接触过科留言评论哦

二、运输层(TCP)

1、TCP与UDP区别

  • TCP 是面向连接的,UDP 是面向无连接的
  • TCP比UDP程序结构复杂。
  • TCP 是面向字节流的,UDP 是基于数据报
  • TCP 保证数据正确性,UDP 可能丢包
  • TCP 保证数据顺序,UDP 不保证

2、TCP三次握手全过程

简单理解:

A:面试官好(确认码SYN=1),我是 A(随机码seq=x)。
B:A吗(ack=x+1),好(SYN=1 ),没问题的话(ACK=1),那就先简单自我介绍一下(随机码seq=y)。
A:好的(ACK=1),面试官好(ack=y+1),我叫A(seq=x+1),来着XXX(第三次握手可携带的其他数据)。

正常描述:一开始,客户端A和服务器B是关闭连接的。假设A和B要连接,那么A就是主动创建连接,B是被动接受连接的。那么:

B就创建TCB(任务控制块),等待A连接。

A创建TCB,主动向B发起连接,先第一次握手,发送一个首部SYN=1、随机序号seq=x的报文段给B,然后等待B发送回复报文。

B收到上述报文后,发送回复报文给A,报文中SYN=1,ACK标记位=1,确认号ack=x+1(表示自己收到你发的上述报文段),还有自己的随机码seq=y

A收到B的回复报文后,确认已经和B连接了,就再发送一个已确认连接的报文,及ACk=1,随机码seq=x+1,确认号ack=y+1;这段报文可夹杂数据

在这里插入图片描述

3、两次握手行不行

两次握手后,服务器B认为连接,传送数据给B,但中途数据丢失或者在网络滞留时间过长。A收不到,以为没连接,会建立新的连接,重传第一次握手,服务器B接收到新的连接,开始第二次握手。后果:造成多次无效连接,即分配无效客户端资源,浪费资源。(SYN攻击)

4、TCP四次挥手全过程

在这里插入图片描述

我拿我初中兼职的例子来简单说一下:

要下班了,老板找我闲聊最近的生活情况(互相发送消息)。一段时间后,老板沉默一会后:

—————————开始四次挥手—————————

(一次)老板:公司有规定,上个月盈利多少才能有多少员工,上个月盈利不足(seq=u),所以嘛,你理解不(FIN=1)。

(二次)我:好的(ACK=1),我明白(ack=u+1),感谢这近一个月的时间里给我的照顾(seq=V)。

(服务器继续之前没传送完的数据)我向老板继续说最近我在公司生活的感受,我:在这段时间里,贵公司…我…

(三次)我:我收拾好东西后就离开(ack=u+1)感谢近一个月时间里贵公司的照顾(seq=w),本人也理解贵公司的做法(FIN =1,ack=u+1)。

(四次)老板:好(ACK=1),还没一个月啊,虽然公司上个月盈利不够好(seq=u+1),不过我给你按一个月的工资结算(ack=w+1)。

—————————结束四次挥手—————————

拿到工资后,打电话跟老妈说:“老妈,我辞掉兼职了,我要抽时间写作业学习了,老板心挺好的,我才干了三个星期,老板就给我开一个月的工资”。

——————————正常描述——————————

第一次挥手:发出连接释放报文段FIN=1,序号seq=u),并停止再发送数据,主动关闭TCP连接,进入FIN_WAIT1(终止等待1)状态,等待服务端的确认。
第二次挥手:服务端收到连接释放报文段后即发出确认报文段(ACK=1,确认号ack=u+1,序号seq=v),服务端进入CLOSE_WAIT(关闭等待)状态,此时的TCP处于半关闭状态,客户端到服务端的连接释放

客户端收到服务端的确认后,进入FIN_WAIT2(终止等待2)状态,等待服务端发出的连接释放报文段。

第三次挥手:客户端收到服务端的连接释放报文段后,对此发出确认报文段(ACK=1,seq=u+1,ack=w+1),客户端进入TIME_WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,客户端才进入CLOSED状态。

5、time_wait状态是第几次挥手之后

第四次。

6、time_wait持续多久?为什么?

2MSL,因为假象网络是不可靠的,有可能最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文

7、TCP拥塞控制全过程

我同学2021年去腾讯还碰到这题,挺高频率的…

参考链接:TCP拥塞控制机制

三、应用层(HTTP)

1、状态码

状态码分类表

类别原因短语
1xxInformational(信息性状态码)接受的请求正在处理
2xxSuccess(成功状态码)请求正常处理完毕
3xxRedirection(重定向)需要进行附加操作以完成请求
4xxClient error(客户端错误)客户端请求出错,服务器无法处理请求
5xxServer Error(服务器错误)服务器处理请求出错

例:**200 OK:**表示从客户端发送给服务器的请求被正常处理并返回

例:**303 See Other:**表示请求的资源被分配了新的URL应使用GET方法定向获取请求的资源

例:403服务器拒绝该次访问(访问权限出现问题)

该部分内容摘抄于:HTTP常见状态码(14种)

2、从输入URL到页面加载发生了什么

  1. DNS域名解析

    自己电脑(浏览器——操作系统)——本地——权限——顶级——根域名服务器(自己电脑查找,没有就一直回溯到根,找到目标服务器,逐步回来把结果告诉主机)

  2. 三次握手

  3. 客户端发送 HTTP请求

  4. 服务器处理请求返回HTTP响应

    返回HTTP状态码200即成功

  5. 浏览器解析和渲染页面

  6. 关闭连接,如:四次挥手

3、HTTP与HTTPS的区别

HTTPSHTTP
安全性安全超文本协议,HTTPS≈HTTP+TLS/SSL
证书HTTPS需要使用CA申请证书
传输协议具有SSL 加密传输协议明文传输
连接及端口号困难(加密),443无状态,80

连接方式与端口上,http的连接简单,是无状态的,端口是 80; https 在http的基础上使用了ssl协议进行加密传输,端口是 443

4、GET和POST区别

从作用上看(正常情况下):
get是为了获取服务器中的某个数据,不尝试修改数据。

post是为了提交某个表单或者请求信息并且需要修改服务器数据(post也被一些ui框架使用于取回数据)

从安全性上看:
从服务器的数据角度:get只是获取服务器中的某个数据,不修改服务器的状态,因此是较安全的。post表单提交的过程中会导致数据库状态改变,因此有可能导致一些安全问题,post是不安全的。

从传输的角度:get中使用的编码原因,get容易被截获,因此是不安全的。post是可以使用多种编码的,较安全

但是归根到底http是明文传输的,作者认为两者都是不安全的,只是而言的。

从浏览器缓存的角度:

get的每次请求对于服务器来说都是无状态的,因此浏览器会采取缓存措施进行缓存

post的每次请求对于服务器都是有状态改变的,因此浏览器会进行缓存,如果进行缓存会导致同个请求多次发送,是一种不合理的表现。

从请求发送的角度:

get发送是一次将请求头与请求体发送过去post是分两次,先头后体。

因此有了这样子一个说法:get是回退无害的,post是回退有害的。

从请求数据编码的角度:

get一般只可以使用ASCII编码,post由于其请求的类型可能是表单等其他数据,因此其请求体可以是多种编码

并且post请求体的长度没有限制get的请求体长度有限制因为浏览器限制,非http协议限制)。

个人见解参考来源与同学的blog:HTTP中post和get的区别简介

四、备注

此blog个人准备(不全,是个人无目标公司时的准备),无针对公司进行准备,面试对应公司时,最好先了解对应公司的招聘信息及以往面经。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-29 09:42:12  更:2021-08-29 09:44:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 20:19:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计