网络相关知识

标题

一、HTTP

问题1:HTTP是什么?

  • HTTP是超文本传输协议。
  • 包含请求/响应报文(具体说出报文包含的字段)。

1.1、请求/响应报文

  • 请求报文

    请求报文

    注意:
    1、get请求没有实体主体。
    2、post请求实体主体。

  • 响应报文


    响应报文

问题2:HTTP的请求方式有哪些?

请求方式

问题3:GET和POST请求方式的区别?

答案1(比较初级):

答案1

高级答案:

高级答案

安全性解释:

安全性

幂等性解释:

幂等

可缓存性解释:

可缓存性

问题4:你都了解哪些状态码,它们的含义是什么?

状态码
  • 200:响应成功。
  • 301、302:网络重定向。
  • 401、404:客户端本身请求有问题。
  • 501、502:服务端本身有异常。

1.2、连接建立流程

tcp的三次握手四次挥手

tcp

HTTP请求是建立在TCP通道上的

三次握手:

  • 客户端发送一个同步报文
  • 服务端收到以后,发送给客户端一个同步确认报文
  • 客户端收到以后,向服务端发送一个确认报文

四次挥手:

  • 客户端发送一个终止报文
  • 服务端收到以后,发送给客户端一个确认报文

此时,由客户端服务端的连接断开了。
但是,服务端还可能向客户端发送数据。

  • 还需服务端客户端发送终止报文
  • 客户端服务端发送确认报文

问题5:HTTP连接建立流程?

  • 三次握手
  • HTTP请求报文和响应报文
  • 四次挥手

1.3、HTTP特点

  • 无连接
    指的是HTTP有一个建立连接释放连接的过程。
    通过HTTP持久连接方案,来解决无连接
  • 无状态
    指的是同一个用户发送多次HTTP请求,服务端是不知道是同一个用户的。
    通过Cookie/Session方案,来解决无状态

1.4、HTTP持久连接

非持久连接
  • 每发送一次HTTP响应,都要重新建立一个TCP通道,经历三次握手四次挥手
持久连接
  • 多个HTTP响应都在一个TCP通道上,只有经过一定时间才会重新建立一个新的TCP通道

1.5、HTTP持久连接头部字段

头部字段
  • Connection
    代表客户端期望持久连接
  • time
    代表持久连接持续时间
  • max
    代表持久连接允许的最多HTTP请求

问题6:怎样判断一个请求是否结束?

因为一个TCP上有多个HTTP请求,判断前一个是否结束很关键。


结束
  • Content-length
    响应报文的头部字段
    根据返回结果大小是否达到Content-length来判断。
  • chunked
    响应报文中的头部字段
    POST请求
    碰到为空,代表请求结束。

问题7:Charles抓包原理是怎么样的?

利用HTTP的中间人攻击漏洞来实现的。

中间人攻击

二、HTTPS与网络安全

2.1、HTTPS概念

HTTPS
层级
  • IP:网络层
  • TCP:传输层
  • HTTP:应用层
  • SSL/TLS:应用层下面、传输层上面

问题8:HTTPS连接建立流程是怎样的?

HTTPS

解释:
1、客户端向服务端发送:TLS版本号、支持的加密算法、随机数C
2、服务端向客户端发送:商定的算法、随机数S、server证书。
3、用服务端公钥 对客户端私钥进行加密,然后发送给服务端。
4、在服务端,服务端私钥 对客户端私钥进行解密。
5、之后HTTP请求就通过被非对称加密保护的对称秘钥展开了
备注:
客户端的秘钥是对称加密
服务端对对称秘钥的保护是通过非对称加密

会话秘钥

会话秘钥

问题9:HTTPS都使用了那些加密手段?为什么?

加密手段

2.2、非对称加密

非对称加密
  • 加密和解密用的是不一样。
  • 公钥加密、私钥解密
  • 私钥加密、公钥解密

2.3、对称加密

对称加密
  • 用同一个秘钥
  • 秘钥在网络传递过程中,被劫持了,就会造成安全隐患。
  • 非对称加密,只有公钥在网络中传输,私钥不传输,所以比较安全。

三、TCP/UDP

TCP/UDP

3.1、UDP(用户数据报协议)

问题10:你是否了解UDP协议?

从特点和功能方面回答。

3.1.1、特点
UDP协议特点
  • 无连接
    发送UDP数据报的时候,不需要事先建立好连接,也就没有释放连接的过程。
  • 尽最大努力交付
    不能保证可靠传输
  • 面向报文
    既不合并,也不拆分。就是有什么就传递什么
    面向报文

    解释:
    应用层的报文无论大小,直接全部作为传输层UDP用户数据报的数据部分,之后将UDP数据报作为IP数据报的数据部分。
3.1.2、功能
功能
  • 复用/分用
    复用
    复用

计算机数据传输是通过网络套接字(socket)。
网络套接字(socket)是IP地址与端口的组合。
一台电脑(同一个IP地址)有不用应用(不同端口号)。
但是不同的应用进行数据传输时,可以通过同一个UDP数据报,再经过IP层。

分用

分用

IP层接收了IP数据报数据,将数据拆分成UDP数据报,每个UDP数据报都包含有原端口目的端口,根据目的端口进行分发数据。

  • 差错检测


    差错检测
UDP头部

解释:
发送端UDP会对数据报文进行以下处理:

  • 以16位字为一个单元。
  • 按照二进制反码计算出这些16位字的和。
  • 和的二进制反码写入检验和位

接收方接收到数据报,再按照上述流程走一遍,如果和UDP首部的检验和位一致,则数据没有错误;反之,代表有错误。

UDP只能检测是否有错误,对恢复错误无能为力。

问题11:UDP是怎样进行差错检测的?

看上面图解!

补充:IM等通信软件,都是利用的是UDP用户数据报协议。

3.2、TCP(传输控制协议)

问题12:你是否了解TCP协议?

从特点和功能方面回答。

3.2.1、特点
TCP特点
1、面向连接
面向连接

问题13:为什么要进行三次握手?

三次握手

解释:
客户端发送一个同步报文丢失/超时,会造成新建一个TCP通道角度回答。回答步骤如下:

  1. 客户端发送同步报文超时了。
  2. 客户端启用超时重传机制,重新发送一个同步报文。
  3. 服务端收到第二次发送的报文,会发送给客户端一个确认报文如果是两次握手,至此TCP通道已经建立了。
  4. 客户端超时的报文,到达了服务端,服务端又会给客户端发送一个确认报文如果是两次握手,又建立一个TCP通道。

你看看是不是多建立了一个TCP通道,浪费!!!
通过三次握手就可以解决上述问题,当超时报文➡️服务端➡️客户端,此时客户端不给服务端发送确认报文,就不会新建一个TCP连接。

问题14:为什么要进行四次挥手?

四次挥手

解释:
从客户端到服务端建立的TCP通道是全双工的
全双工的概念:客户端可以给服务端发送和回复,服务端可以给客户端发送和回复。
所以需要双方都进行中断。

2、可靠传输

问题15:TCP是怎样保证可靠传输的?

通过停止等待协议实现的;有以下特点:

停止等待协议

  • 无差错情况(正常情况)

    无差错情况

    客户端➡️服务端报文,服务端➡️客户端确认报文
    一直循环下去。

  • 超时重传(服务端收不到报文)

    超时重传

    解释:
    1、由于网络环境比较差,客户端丢失/滞留了报文;或者报文被篡改了等等。会被服务端判定为有差错的报文。此时,服务端不会发送确认报文。
    2、客户端收不到确认报文,一定时间后,会重新发送报文。

  • 确认丢失(客户端收不到确认报文)

    确认丢失

    解释:
    1、服务端发送的确认报文,客户端没有收到。
    2、客户端启动超时重传,重新发送。
    3、客户端丢弃重传的报文,重新发送确认报文
    4、客户端收到确认报文,一切正常进行。

  • 确认迟到(服务端的确认报文迟到了)

    确认迟到

    解释:
    1、前面过程和确认丢失过程类似。
    2、收到迟到的确认报文什么也不做。

3、面向字节流

面向字节流

解释:
发送方发送给TCP的字节,会被拆分成不同的字节进行发送,而不是有多少发送多少,由TCP决定。

4、流量控制

基于滑动窗口协议来完成的。

滑动窗口协议

解释:
由于接收方的接收窗口/接收缓存,没有那么大;此时,通过由接收方向TCP报文首部字段中更改窗口值,发送方解析出来后,调整发送窗口大小,从而达到流量控制

简单理解就是:接收方通过告知发送方,自己当前缓存区的大小情况,让发送方减少或增大发送量。

问题16:什么是滑动窗口协议?你是怎么理解的?

见上图解。

5、拥塞控制

1、两个策略


概念

拥塞控制

解释:
1、横轴代表交互次数、纵轴代表窗口值大小。
2、开始,先发送一个报文,如果没有发生网络拥塞;接着,发送两个报文,如果还没有发生网络拥塞,就以指数规律成倍发送报文。
3、增长到窗口门限值后,会采用拥塞避免的策略,采用线性增长
4、当增长到一定值时,发生了网络拥塞,采用拥塞避免乘法减小的策略,来恢复到只发送一个报文。 同时,把拥塞窗口门限值降为原来的一半
5、此时,从新的门限值位置开启拥塞避免的策略,采用线性增长;而不会重新慢开始

问题17:请简单描述TCP慢启动的特点?

慢开始、拥塞避免角度回答。
见上图解。

问题18:TCP的快恢复、快重传?

新的门限值位置开启拥塞避免的策略,采用线性增长;而不会重新慢开始

四、DNS解析

4.1、概念

DNS解析

解释:
DNS解析特点:UDP数据报明文

问题19:你是否了解DNS解析?

见上图解

4.2、解析过程

解析过程
  • 客户端通过DNS协议DNS服务器进行域名解析
  • DNS服务器返回解析出来的IP地址
  • 客户端根据IP地址发送网络请求。

4.2、DNS解析查询方式

问题20:DNS解析查询方式?

查询方式
  • 递归查询
    含义:我去给你问一下

    递归查询

  • 迭代查询
    含义:我告诉你谁可能知道

    迭代查询

4.2、DNS存在问题

问题21:DNS解析存在哪些常见的问题?

DNS问题
  • DNS劫持
    DNS劫持

    解释:
    因为DNS请求采用UDP数据报文,且是明文。很容易被劫持的。

问题22:DNS劫持与HTTP的关系是怎样的?

关系
  • DNS解析转发
    DNS解析转发

    解释
    通俗来讲,你用的电话卡是移动的,此时进行DNS查询的时候,会去移动的DNS服务器去查询。但是这个移动的DNS服务器为了节约资源,转发到电信的DNS服务器,此时就形成了DNS解析转发。

4.3、怎样解决DNS劫持

解决
  • httpDNS
    httpDNS

    解释
    不产生正常的DNS解析了,就不会产生DNS解析的问题了。

示例图如下:

httpDNS解析图

  • 长连接
    长连接

    这里的长连Server指的是代理服务器。

五、Session / Cookie

5.1、作用

HTTP协议无状态特点的补偿。

图解

5.2、Cookie

5.2.1、Cookie概念

问题23:Cookie的概念?

Cookie的概念

Cookie整个流程

流程

客户端和服务端设置Cookie

设置Cookie

问题24:怎样修改Cookie?

修改Cookie

问题25:怎样删除Cookie?

删除Cookie

备注
删除Cookie:覆盖+ 设置过期时间等

问题26:怎样保证Cookie的安全?

安全

5.3、Session

5.3.1、Session概念

问题27:Session的概念?

Cookie的概念

问题28:Session和Cookie的关系怎样?

  • 区别
    Session存在服务端,Cookie存在客户端
  • 联系
    Session需要依赖Cookie机制。

5.3.2、Session工作流程

流程

六、网络整体总结

题目

问题29:TCP和UDP有什么区别?

1、特点不同
TCP

TCP

UDP

UDP

2、功能
TCP
提供了流量控制拥塞控制

UDP
只提供了复用/分用差错检测基本功能。

其它答案:见上文。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • 一、HTTP协议 超文本传输协议 请求/响应报文 连接简历流程 HTTP的特点 1.1 请求/响应报文 HTTP的...
    木子奕阅读 895评论 1 6
  • 一.HTTP HTTP是超文本传输协议 1.请求报文的格式 请求行:方法(get、post)、url(请求的地址)...
    蔚尼阅读 605评论 0 2
  • 1.TCP报头格式 UDP报头格式 TCP报头格式 UDP报头格式 具体的各部分解释看 TCP报文格式详解 - ...
    杰伦哎呦哎呦阅读 2,301评论 0 5
  • 1.创建Person类文件,继承NSObject2.创建Student类文件,继承自Person(父类)3.在Vi...
    Stormstout阅读 579评论 0 0
  • 身为一个瑜伽老师,我有时候也做不到一天至少练习一小时瑜伽。不过我找到了一种不会占用太多时间,也可以练习瑜伽的方法。...
    JackieYu_03d9阅读 373评论 0 1