1- <!-- TOC -->
2-
3- - [ 第一部分:传输层] ( #第一部分传输层 )
4- - [ 1. 说一下OSI七层模型 TCP/IP四层模型 五层协议] ( #1-说一下osi七层模型--tcpip四层模型--五层协议 )
5- - [ (1)五层协议] ( #1五层协议 )
6- - [ (2)ISO七层模型中表示层和会话层功能是什么?] ( #2iso七层模型中表示层和会话层功能是什么 )
7- - [ (3)数据在各层之间的传递过程] ( #3数据在各层之间的传递过程 )
8- - [ (4)TCP/IP四层模型] ( #4tcpip四层模型 )
9- - [ 2. TCP报头格式和UDP报头格式] ( #2-tcp报头格式和udp报头格式 )
10- - [ (1)UDP 和 TCP 的特点] ( #1udp-和-tcp-的特点 )
11- - [ (2)UDP 首部格式] ( #2udp-首部格式 )
12- - [ (3)TCP 首部格式] ( #3tcp-首部格式 )
13- - [ 3. TCP三次握手?那四次挥手呢?如何保障可靠传输] ( #3-tcp三次握手那四次挥手呢如何保障可靠传输 )
14- - [ (1)三次握手] ( #1三次握手 )
15- - [ (2)三次握手的原因] ( #2三次握手的原因 )
16- - [ (3)四次挥手] ( #3四次挥手 )
17- - [ (4)四次挥手的原因] ( #4四次挥手的原因 )
18- - [ (5)TIME_WAIT] ( #5time_wait )
19- - [ (6)如何保证可靠传输] ( #6如何保证可靠传输 )
20- - [ (7)为什么TCP连接需要三次握手,两次不可以吗,为什么?【阿里面经OneNote】] ( #7为什么tcp连接需要三次握手两次不可以吗为什么阿里面经onenote )
21- - [ (8)TCP连接状态?] ( #8tcp连接状态 )
22- - [ 4. TCP和UDP区别?如何改进TCP【阿里面经OneNote】] ( #4-tcp和udp区别如何改进tcp阿里面经onenote )
23- - [ 5. TCP滑动窗口?【阿里面经OneNote】] ( #5-tcp滑动窗口阿里面经onenote )
24- - [ 6. TCP流量控制] ( #6-tcp流量控制 )
25- - [ 7. TCP的拥塞处理(Congestion Handling)【阿里面经OneNote】] ( #7-tcp的拥塞处理congestion-handling阿里面经onenote )
26- - [ (1)慢开始与拥塞避免] ( #1慢开始与拥塞避免 )
27- - [ (2)快重传与快恢复] ( #2快重传与快恢复 )
28- - [ 8. 如何区分流量控制和拥塞控制?] ( #8-如何区分流量控制和拥塞控制 )
29- - [ 9. 解释RTO,RTT和超时重传?] ( #9-解释rtortt和超时重传 )
30- - [ 10. 从输入网址到获得页面的网络请求过程【阿里面经OneNote】] ( #10-从输入网址到获得页面的网络请求过程阿里面经onenote )
31- - [ 11. 什么是短连接和长连接] ( #11-什么是短连接和长连接 )
32- - [ ] ( # )
33- - [ 第二部分:应用层(HTTP)] ( #第二部分应用层http )
34- - [ 1. URL、URI、URN区别] ( #1-urluriurn区别 )
35- - [ 2. HTTP的请求和响应报文] ( #2-http的请求和响应报文 )
36- - [ (1)请求报文] ( #1请求报文 )
37- - [ (2)响应报文] ( #2响应报文 )
38- - [ 3. HTTP状态] ( #3-http状态 )
39- - [ (1)1XX 信息] ( #11xx-信息 )
40- - [ (2)2XX 成功] ( #22xx-成功 )
41- - [ (3)3XX 重定向] ( #33xx-重定向 )
42- - [ (4)4XX 客户端错误] ( #44xx-客户端错误 )
43- - [ (5)5XX 服务器错误] ( #55xx-服务器错误 )
44- - [ 4. HTTP方法] ( #4-http方法 )
45- - [ (1)GET] ( #1get )
46- - [ (2)HEAD] ( #2head )
47- - [ (3)POST] ( #3post )
48- - [ (4)PUT] ( #4put )
49- - [ (5)PATCH] ( #5patch )
50- - [ (6)DELETE] ( #6delete )
51- - [ (7)OPTIONS] ( #7options )
52- - [ (8)CONNECT] ( #8connect )
53- - [ (9)TRACE] ( #9trace )
54- - [ 5. GET和POST的区别?【阿里面经OneNote】] ( #5-get和post的区别阿里面经onenote )
55- - [ 6. 如何理解HTTP协议是无状态的] ( #6-如何理解http协议是无状态的 )
56- - [ 7. Cookie] ( #7-cookie )
57- - [ (1)用途] ( #1用途 )
58- - [ (2)创建过程] ( #2创建过程 )
59- - [ (3)分类] ( #3分类 )
60- - [ (4)JavaScript 获取 Cookie] ( #4javascript-获取-cookie )
61- - [ (5)Secure 和 HttpOnly] ( #5secure-和-httponly )
62- - [ (6)作用域] ( #6作用域 )
63- - [ 7. Session] ( #7-session )
64- - [ 8. 浏览器禁用 Cookie] ( #8-浏览器禁用-cookie )
65- - [ 9. Cookie 与 Session 选择] ( #9-cookie-与-session-选择 )
66- - [ 10. HTTPs安全性] ( #10-https安全性 )
67- - [ (1)对称密钥加密] ( #1对称密钥加密 )
68- - [ (2)非对称密钥加密] ( #2非对称密钥加密 )
69- - [ (3)HTTPs 采用的加密方式] ( #3https-采用的加密方式 )
70- - [ 11. SSL/TLS协议的握手过程] ( #11-ssltls协议的握手过程 )
71- - [ (1)client hello] ( #1client-hello )
72- - [ (2)server hello] ( #2server-hello )
73- - [ (3)server certificate] ( #3server-certificate )
74- - [ (4)Server Hello Done] ( #4server-hello-done )
75- - [ (5)Client Key Exchange] ( #5client-key-exchange )
76- - [ (6)Change Cipher Spec(Client)] ( #6change-cipher-specclient )
77- - [ (7)Finished(Client)] ( #7finishedclient )
78- - [ (8)Change Cipher Spec(Server)] ( #8change-cipher-specserver )
79- - [ (9)Finished(Server)] ( #9finishedserver )
80- - [ (10-11)Application Data] ( #10-11application-data )
81- - [ (12)Alert:warning, close notify] ( #12alertwarning-close-notify )
82- - [ (* )demand client certificate] ( #demand-client-certificate )
83- - [ (* )check server certificate] ( #check-server-certificate )
84- - [ ] ( #-1 )
85- - [ 12. HTTP和HTTPS的区别【阿里面经OneNote】] ( #12-http和https的区别阿里面经onenote )
86- - [ 13. HTTP2.0特性] ( #13-http20特性 )
87- - [ (1)二进制分帧] ( #1二进制分帧 )
88- - [ (2)多路复用] ( #2多路复用 )
89- - [ (3)服务器推送] ( #3服务器推送 )
90- - [ (4)头部压缩] ( #4头部压缩 )
91- - [ 第三部分:网络层] ( #第三部分网络层 )
92- - [ mac和ip怎么转换] ( #mac和ip怎么转换 )
93- - [ 第三部分:网络安全] ( #第三部分网络安全 )
94- - [ 1. 如果客户端不断的发送请求连接会怎样?【阿里面经OneNote】] ( #1-如果客户端不断的发送请求连接会怎样阿里面经onenote )
95- - [ 2. 怎么知道连接是恶意的呢?可能是正常连接?【阿里面经OneNote】] ( #2-怎么知道连接是恶意的呢可能是正常连接阿里面经onenote )
96- - [ 3. Web攻击基础] ( #3-web攻击基础 )
97- - [ (1)跨站脚本攻击XSS] ( #1跨站脚本攻击xss )
98- - [ (2)跨站请求伪造CSRF] ( #2跨站请求伪造csrf )
99- - [ (3)SQL注入攻击] ( #3sql注入攻击 )
100- - [ (4)拒绝服务攻击Dos] ( #4拒绝服务攻击dos )
101- - [ (5)泪滴攻击] ( #5泪滴攻击 )
102- - [ 附录1:参考面经] ( #附录1参考面经 )
103- - [ 【重口味 ぅヾ】2018秋招面经-后端开发] ( #重口味-ぅヾ2018秋招面经-后端开发 )
104- - [ 附录2:参考资料] ( #附录2参考资料 )
105-
106- <!-- /TOC -->
107-
1081# 第一部分:传输层
1092
1103## 1. 说一下OSI七层模型 TCP/IP四层模型 五层协议
11912 - 传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;
12013 - 用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。
12114 - TCP 主要提供完整性服务,UDP 主要提供及时性服务。
122- - ** 网络层** :为主机间提供数据传输服务,而运输层协议是为主机中的进程提供服务。网络层把运输层传递下来的报文段或者用户数据报封装成分组。
15+ - ** 网络层** :为主机间提供数据传输服务,而运输层协议是为主机中的进程提供服务。网络层把运输层传递下来的报文段或者用户数据报封装成分组。(负责选择最佳路径 规划IP地址)
12316 - 路由器查看数据包目标IP地址,根据路由表为数据包选择路径。路由表中的类目可以人工添加(静态路由)也可以动态生成(动态路由)。
12417- ** 数据链路层** :不同的网络类型,发送数据的机制不同,数据链路层就是将数据包封装成能够在不同的网络传输的帧。能够进行差错检验,但不纠错,监测处错误丢掉该帧。
12518 - 帧的开始和结束,透明传输,差错校验
14134
14235### (3)数据在各层之间的传递过程
14336
144- 在向下的过程中,需要添加下层协议所需要的首部或者尾部,而在向上的过程中不断拆开首部和尾部。
37+ 在向下的过程中,需要添加下层协议所需要的首部或者尾部,而在向上的过程中不断拆开首部和尾部。
14538
146- 路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也就不需要运输层和应用层。
39+ 1 . 路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也就不需要运输层和应用层。
40+ 2 . 交换机只有下面两层协议
14741
14842<div align =" center " > <img src =" pics/transfer.jpg " width =" 700 " /> </div ><br >
14943
15044
15145
152- ## (4)TCP/IP四层模型
46+ ### (4)TCP/IP四层模型
15347
15448它只有四层,相当于五层协议中** 数据链路层和物理层合并为网络接口层** 。
15549
15650现在的 TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。
15751
15852
159- <div align =" center " > <img src =" pics/tcp_ip_4.png " width =" 500 " /> </div ><br >
53+ <div align =" center " > <img src =" pics/tcp_ip_4.png " width =" 450 " /> </div ><br >
16054
16155
16256
@@ -183,24 +77,24 @@ TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中
18377
18478### (1)UDP 和 TCP 的特点
18579
186- - 用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交互通信。
187- - 传输控制协议 TCP(Transmission Control Protocol)是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条 TCP 连接只能是点对点的(一对一)。
80+ - ** 用户数据报协议 UDP** (User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交互通信。例如:视频传输、实时通信
81+ - ** 传输控制协议 TCP** (Transmission Control Protocol)是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条 TCP 连接只能是点对点的(一对一)。
18882
18983### (2)UDP 首部格式
19084
191- <div align =" center " > <img src =" pics/udp_head.jpg " width =" 600 " /> </div ><br >
85+ <div align =" center " > <img src =" pics/udp-head2.png " width =" 600 " /> </div ><br >
19286
19387首部字段只有 8 个字节,包括源端口、目的端口、长度、检验和。12 字节的伪首部是为了计算检验和临时添加的。
19488
19589
19690
19791### (3)TCP 首部格式
19892
199- <div align =" center " > <img src =" pics/tcp_head .png " width =" 600 " /> </div ><br >
93+ <div align =" center " > <img src =" pics/tcp-head .png " width =" 600 " /> </div ><br >
20094
20195
20296
203- - ** 序号** :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。* [ 301,400] 为序号301的数据长度,下一个则为401*
97+ - ** 序号 seq ** :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。[ 301,400] 为序号301的数据长度,下一个则为401
20498- ** 确认号 ack** :期望收到的下一个报文段的序号。例如 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据长度为 200 字节,因此 B 期望下一个报文段的序号为 701,B 发送给 A 的确认报文段中确认号就为 701。
20599- ** 数据偏移** :指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。
206100- ** 确认 ACK** :当 ACK=1 时确认号字段有效,否则无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1。
@@ -210,34 +104,27 @@ TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中
210104
211105
212106
213- ## 3. TCP三次握手?那四次挥手呢?如何保障可靠传输
214-
107+ 参考资料:
215108
216- 前置知识
109+ - [ 计算机网络-运输层-笔记 | SamanthaChen's Blog ] ( https://samanthachen.github.io/2016/08/15/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C3/ )
217110
218- ```
219- 三次握手:three times handshake;three-way handshake
220-
221- SYN(Synchronize,译:同步)是该协议中的一个标志位。如果该位被置为1,则表示这个报文是一个请求建立连接的报文。
222- ACK(Acknowledgement,译:确认)也是该协议的一个标志位。如果该位被置为1,则表示这个报文是一个用于确认的报文。
223- seq(sequence number,序列号)
224- ack(Acknowledgement Number,确认编号)
225- ```
226111
227112
113+ ## 3. TCP三次握手?那四次挥手呢?如何保障可靠传输
228114
229115### (1)三次握手
230116
231- <div align =" center " > <img src =" pics/tcp3.png " width =" 500 " /> </div ><br >
232-
117+ <div align =" center " > <img src =" pics/tcp-3.png " width =" " /> </div ><br >
233118
234- 假设 A 为客户端,B 为服务器端。
119+ ** 假设 A 为客户端,B 为服务器端。**
235120
236121- 首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。
237122- A 向 B 发送连接请求报文段,SYN=1,ACK=0,选择一个初始的序号 x。
238123- B 收到连接请求报文段,如果同意建立连接,则向 A 发送连接确认报文段,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。
239124- A 收到 B 的连接确认报文段后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。
125+ - A 的 TCP 通知上层应用进程,连接已经建立。
240126- B 收到 A 的确认后,连接建立。
127+ - B 的 TCP 收到主机 A 的确认后,也通知其上层 应用进程:TCP 连接已经建立。
241128
242129
243130
@@ -251,9 +138,7 @@ ack(Acknowledgement Number,确认编号)
251138
252139### (3)四次挥手
253140
254- <div align =" center " > <img src =" pics/tcp4.jpg " width =" 600 " /> </div ><br >
255-
256-
141+ <div align =" center " > <img src =" pics/tcp-4.png " width =" " /> </div ><br >
257142
258143
259144
@@ -310,7 +195,7 @@ ack(Acknowledgement Number,确认编号)
310195
311196
312197
313- ## (8)TCP连接状态?
198+ ### (8)TCP连接状态?
314199
315200- CLOSED:初始状态。
316201- LISTEN:服务器处于监听状态。
@@ -1104,7 +989,7 @@ HTTP 1.1请求的大小变得越来越大,有时甚至会大于TCP窗口的初
1104989
1105990# 第三部分:网络层
1106991
1107- ## mac和ip怎么转换
992+ ## 1. mac和ip怎么转换
1108993
1109994** ARP协议:**
1110995
0 commit comments