硬核! 30张图解HTTP常见面试题

前言

在面试过程中,HTTP 被提问的概率还是比较高的。小林我搜集了5大类HTTP面试常问的题目,同时这5大类题跟HtTP的发展和演变关联性是比较大的,通过问答+图解的形式由浅入深的方式帮助大家进步的学习和理解 HTTP。

 

  • 01 HTTP基本概念
  • 02 GET与POST
  • 03 HTTP特性
  • 04 HTTP与HTTPS
  • 05 HTTP/1.1. HTTP/2、HTTP/3 滴变

 

 

 

需要获取这份《图解网络协议》文档的小伙伴可以点击传送门 即可!!

IP基础知识全家桶,45张图一套带走

前言

前段时间,有读者希望我写篇关于IP分类地址、 子网划分等的文章, 他的反馈常常混淆,摸不着头脑。那么,说来就来!而且要盘就盘全一点,顺便挑战下小林的图解功力,所以就来个IP基础知识全家桶。吃完这个IP基础知识全家桶,包你撑着肚子喊出:“真香!”

不多说,直接上菜,共分为三道菜:

 

  • 首先是前菜「 IP基本认识」
  • .其次是主菜「IP地址的基础知识」
  • .最后是点心「IP协议相关技术」

 

 

 

 

听说你ping用得很6 ?给我图解一下ping的工作原理

前言

在日常生活或工作中,我们在判断与对方网络是否畅通,使用得最多的莫过于ping 命令了。“那你知道ping 是如何工作的吗?”--来自小林的灵魂拷问可能有的小伙伴奇怪地问:“我 虽然不明白它的工作,但ping我也用得贼6啊!”你用的是6,但你在面试官面前,你就6不起来了,毕竟他们也爱问。

不知道的小伙伴也没关系,今天我们就来搞定它,搞懂它。消除本次的问号,让问号少一点。

 

 

 

键入网址后,其间发生了什么?

前言

想必不少小伙伴面试过程中,会遇到「当键入网址后,到网页显示,其间发生了什么」的面试题。还别说,这真是挺常问的问题,前几天坐在我旁边的主管电话面试应聘者的时候,也问了这个问题。这次,小林我带大家一起探究下, 一个数据包在网络中的心路历程。每个阶段都有数据包的「心路历程」,我们一 看看它说了什么?

接下来以下图较简单的网络拓扑模型作为例子,探究探究其间发生了什么?

 

 

 

硬不硬你说了算!近40张图解被问了千百遍的TCP三次握手和四次挥手面试题

前言

不管面试Java、C/C++、 Python 等开发岗位,TCP 的知识点可以说是必问的了。任TCP虐我千百遍,我仍待TCP如初恋。遥想小林当年校招时常因TCP 面试题被刷,真是又爱又恨...过去不会没关系,今天就让我们来消除这份恐惧,微笑着勇敢地面对它吧!所以小林整理了关于TCP三次握手和四次挥手的面试题型,跟大家起探讨探讨。

1:TCP的基本认识

 

2:TCP连接建立

 

3:TCP链接断开

 

4:Socket 编程

 

 

 

 

你还在为TCP重传、滑动窗口、流量控制、拥塞控制发愁吗?看完图解就不愁了

前言

相信大家都知道TCP是一个可靠传输的协议,那它是如何保证可靠的呢?

为了实现可靠性传输,需要考虑很多事情,例如数据的破坏、丢包、重复以及分片顺序混乱等问题。如不能解决这些问题,也就无从谈起可靠传输。

那么,TCP是通过序列号、确认应答、重复控制、连接管理以及窗口控制等机制实现可靠性传输的。

今天,将重点介绍TCP的重传机制、滑动窗口、流量控制、拥塞控制。

 

超时重传

重传机制的其中一个方式,就是在发送数据时,设定个定时器, 当超过指定的时间后,没有收到对方的ACK确认应答报文,就会重发该数据,也就是我们常说的超时重传。

TCP会在以下两种情况发生超时重传:

  • .数据包丢失
  • 确认应答丢失

 

 

 

实战!我用Wireshark让你「看得见」TCP

前言

为了让大家更容易「看得见」TCP, 我搭建不少测试环境,并且数据包抓很多次,花费了不少时间,才抓到比较容易分析的数据包。接下来丢包、乱序、超时重传、快速重传、选择性确认、流量控制等等TCP的特性,都能「一览无余」

没错,我把TCP的"衣服扒光"了,就为了给大家看得清楚,嘻嘻。

 

 

TCP半连接队列和全连接队列满了会发生什么?又该如何应对?

前言

网上许多博客针对增大TCP半连接队列和全连接队列的方式如下:

  • 增大TCP半连接队列的方式是增大/proc/sys/netipv4/tcp_ max_ syn. _backlog
  • 增大TCP全连接队列的方式是增大listen0 函数中的backlog ;

这里先跟大家说下,上面的方式都是不准确的。

什么?我怎么知道上面的是不准确的?

很简单呀,因为我做了实验和看了TCP协议栈的内核源码,发现要增大这两个队列长度,不是简简单单增大某一个参数就可以的。

接下来,就会以实战+源码分析,带大家解密TCP半连接队列和全连接队列。

 

在TCP三次握手的时候,Linux 内核会维护两个队列,分别是:

  • 半连接队列,也称SYN队列;
  • 全连接队列,也称accepet队列;

服务端收到客户端发起的SYN请求后,内核会把该连接存储到半连接队列,并向客户端响应SYN+ACK,接着客户端会返回ACK,服务端收到第三次握手的ACK后,内核会把连接从半连接队列移除,然后创建新的完全的连接,并将其添加到accept队列,等待进程调用accept函数时把连接取出来。

 

面试官:换人!他连TCP这几个参数都不懂

前言

TCP性能的提升不仅考察TCP的理论知识,还考察了对于操作系统提供的内核参数的理解与应用。

TCP协议是由操作系统实现,所以操作系统提供了不少调节TCP的参数。

 

接下来,将以三个角度来阐述提升TCP的策略,分别是:

  • TCP三次握手的性能提升;
  • TCP 四次挥手的性能提升;
  • TCP数据传输的性能提升;

 

需要获取这份《图解网络协议》文档的小伙伴可以点击传送门 即可!!