38. 一份tcp、http面试指南,常考点都给你了

简介: 38. 一份tcp、http面试指南,常考点都给你了

38. 一份tcp、http面试指南,常考点都给你了


TCP

要说http就绕不开tcp,TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。但是,http是基于tcp协议的。

TCP/IP 协议分层模型

物理层将二进制的0和1和电压高低,光的闪灭和电波的强弱信号进行转换

链路层代表驱动

网络层

使用 IP 协议,IP 协议基于 IP 转发分包数据

- IP 协议是个不可靠协议,不会重发

- IP 协议发送失败会使用ICMP 协议通知失败

- ARP 解析 IP 中的 MAC 地址,MAC 地址由网卡出厂提供

- IP 还隐含链路层的功能,不管双方底层的链路层是啥,都能通信

传输层

TCP 协议面向有连接,能正确处理丢包,传输顺序错乱的问题,但是为了建立与断开连接,需要至少7次的发包收包,资源浪费

- UDP 面向无连接,不管对方有没有收到,如果要得到通知,需要通过应用层

- 通用的 TCP 和 UDP 协议

会话层以上分层

TCP/IP 分层中,会话层,表示层,应用层集中在一起

- 网络管理通过 SNMP 协议

划 重 点 了 啊 ( 面 试 最 常 问 的 啊 ) \textcolor{Red}{划重点了啊(面试最常问的啊)}划重点了啊(面试最常问的啊)

TCP三次握手和四次挥手?

被问烂了的问题了,这里不详细讲了,

三次握手:

客户端–发送带有SYN标志的数据包–一次握手–服务端

服务端–发送带有SYN/ACK标志的数据包–二次握手–客户端

客户端–发送带有带有ACK标志的数据包–三次握手–服务端

四次挥手:

客户端-发送一个FIN,用来关闭客户端到服务器的数据传送

服务器-收到这个FIN,它发回一个ACK,确认序号为收到的序号加1 。和SYN一样,一个FIN将占用一个序号

服务器-关闭与客户端的连接,发送一个FIN给客户端

客户端-发回ACK报文确认,并将确认序号设置为收到序号加1

还不懂的童鞋,去找别人的文章好好看看!

TCP和UDP的区别?

仔细阅读上面传输层里写的内容,懂了吗?(不懂?不懂背下来啊,混蛋!)

我们微信聊天时候经常会有这种情况。

是不是感同身受,这种情况就是对方用了TCP协议来聊天,要经过–在吗?–在--巴拉巴拉,才能成功的传递信息。而如果对方使用UDP,则会有事直接说,不管我收没收到。(以后找我请用UDP协议,着急直接打电话!)

HTTP

Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的。所以Http连接是一种短连接,是一种无状态的连接。

所谓的无状态,是指浏览器每次向服务器发起请求的时候,不是通过一个连接,而是每次都建立一个新的连接。如果是一个连接的话,服务器进程中就能保持住这个连接并且在内存中记住一些信息状态。而每次请求结束后,连接就关闭,相关的内容就释放了,所以记不住任何状态,成为无状态连接。

http传输流

发送端在层与层间传输数据时,没经过一层都会被加上首部信息,接收端每经过一层都会删除一条首部

又 来 划 重 点 了 啊 \textcolor{Red}{又来划重点了啊}又来划重点了啊

HTTP的英文全称

开玩笑的,这个显然不是重点,但是不排除有人会去问,还是要知道的:超文本传输协议(HyperText Transfer Protocol)

状态码

状态码就那些,常用的记住就行了:

2XX 成功

200 OK,表示从客户端发来的请求在服务器端被正确处理

204 No content,表示请求成功,但响应报文不含实体的主体部分

206 Partial Content,进行范围请求

3XX 重定向

301 moved permanently,永久性重定向,表示资源已被分配了新的 URL

302 found,临时性重定向,表示资源临时被分配了新的 URL

303 see other,表示资源存在着另一个 URL,应使用 GET 方法定向获取资源

304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况

307 temporary redirect,临时重定向,和302含义相同

4XX 客户端错误

400 bad request,请求报文存在语法错误

401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息

403 forbidden,表示对请求资源的访问被服务器拒绝

404 not found,表示在服务器上没有找到请求的资源

5XX 服务器错误

500 internal sever error,表示服务器端在执行请求时发生了错误

503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求

HTTP协议格式

HTTP的请求和响应的消息协议是一样的,分为三个部分,起始行、消息头和消息体。这三个部分以CRLF作为分隔符。最后一个消息头有两个CRLF,用来表示消息头部的结束。

HTTP响应的起始行称为状态行,形如200 ok

消息头部有很多键值对组成,多个键值对之间使用CRLF作为分隔符,也可以完全没有键值对。形如Content-Encoding: gzip 消息体是一个字符串,字符串的长度是由消息头部的Content-Length键指定的。如果没有Content-Length字段说明没有消息体,譬如GET请求就是没有消息体的,POST请求的消息体一般用来放置表单数据。GET请求的响应返回的页面内容也是放在消息体里面的。我们平时调用API返回的JSON内容都是放在消息体里面的。

HTTP的无状态性

所谓HTTP协议的无状态性是指服务器的协议层无需为不同的请求之间建立任何相关关系,它特指的是协议层的无状态性。但是这并不代表建立在HTTP协议之上的应用程序就无法维持状态。

应用层可以通过会话Session来跟踪用户请求之间的相关性,服务器会为每个会话对象绑定一个唯一的会话ID,浏览器可以将会话ID记录在本地缓存LocalStorage或者Cookie,在后续的请求都带上这个会话ID,服务器就可以为每个请求找到相应的会话状态。

输入url到页面加载都发生了什么事情?(最最常问的来了)

输入地址

浏览器查找域名的 IP 地址 这一步包括 DNS 具体的查找过程,包括:浏览器缓存->系统缓存->路由器缓存…

浏览器向 web 服务器发送一个 HTTP 请求

服务器的永久重定向响应(从 http://example.comhttp://www.example.com

浏览器跟踪重定向地址

服务器处理请求

服务器返回一个 HTTP 响应

浏览器显示 HTML

浏览器发送请求获取嵌入在 HTML 中的资源(如图片、音频、视频、CSS、JS等等)

浏览器发送异步请求

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
2月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
140 2
|
2月前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
79 13
|
2月前
|
缓存 负载均衡 网络协议
面试:TCP、UDP如何解决丢包问题
TCP、UDP如何解决丢包问题。TCP:基于数据块传输/数据分片、对失序数据包重新排序以及去重、流量控制(滑动窗口)、拥塞控制、自主重传ARQ;UDP:程序执行后马上开始监听、控制报文大小、每个分割块的长度小于MTU
|
2月前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
2月前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
2月前
|
Java 程序员
面试高频考点!关于构造方法的那些事儿
本文介绍了Java中的构造方法,包括其基本概念、默认构造方法、构造方法的重载、构造方法的细节以及执行顺序。通过具体示例,详细解释了构造方法在对象初始化中的重要作用,帮助读者在面试中更好地应对相关问题。
40 1
|
2月前
|
网络协议 前端开发 API
HTTP 和 TCP 协议的应用场景有哪些不同
【10月更文挑战第25天】HTTP(超文本传输协议)和 TCP(传输控制协议)处于网络协议栈的不同层次,各自具有独特的功能和特点,因此它们的应用场景也存在明显的差异。
|
2月前
|
网络协议
http 与 tcp 的关系
【10月更文挑战第25天】总的来说,HTTP 和 TCP 是网络通信中不可或缺的两个协议,它们共同为网络应用提供了可靠的数据传输和交换服务。理解它们之间的关系对于开发和维护网络应用具有重要的意义。
|
2月前
|
网络协议 API 数据格式
HTTP 和 TCP 协议的主要区别
【10月更文挑战第25天】HTTP 和 TCP 在网络通信中扮演着不同的角色,各自具有独特的功能和特点,它们相互配合,共同为实现网络应用的各种需求提供了基础支持。
|
3月前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
47 3