1、往同网段如何发包/交互?
改目标ip的mac,改成目标ip查到的mac。
2、路由一定是对称的吗?
路由不一定原路返回,可以绕路回去。
3、路由是工作在哪一层的协议?
路由协议简单理解工作在ip层,但其实不是,本身不是工作在IP层。
BGP动态路由协议,是属于传输层的协议,基于TCP/UDP制作的。
4、路由是改IP地址吗?
不是。路由是改mac地址,找到发包口。
改IP收不到包。路由是找中间的路,如果知道下一跳,可以做ARP请求,再把目标mac改成下一跳的mac,可以是别称同个网段,就可以传输。
5、发包为什么需要指定网卡?
需要指定网卡的port。发包的时候以网卡为单位。
6、怎么找到下一跳的Mac?
通过ARP协议去找。逻辑同网段才能发送ARP,跨网段不可以,因为路由不是改IP。ARP是一级一级找下一跳,即中间节点,最终找到目标地址mac,然后疯狂迭代,手机端通过运营商网络接入运营商抖音服务器,最终再接到抖音机房。除非是同网段,不然一定要下一跳查找。
7、ARP
ARP本质上是查找下一跳的MAC,不是请求目标地址。
ARP请求广播广播,ARP应答单播。
免费ARP,不用请求,就告诉你ARP地址。比如局域网里面加机器,IP新加了,本身的mac地址,局域网的其他设备,之前没有查询过ARP,也就是没有缓存的,其他机器往新机器发包,效率会比较慢。这种场景下会发一个免费ARP,源地址和目标mac和ARP有区别。刷新一下mac就可以知道新增机器了。可以防止ip冲突。
ARP正向代理,发送ARP中间设备给你抢先应答。比如经过交换机被劫持,误导你ARP请求到其他目标响应,可以来做STN。
8、Mac地址不能代替IP地址吗?
Mac协议是一个二层协议,除了以太网协议,还有其他协议。需要有一个向下兼容的功能。
IP协议把不同网络统一,再网上封装一次,把不同的二层网络做了一个统一用一个IP地址表示。
9、IPv4不够用怎么解决?设备不支持IPv6怎么办?
除了IPv6,还有NAT。
10、家里的路由是怎么上网的?
家里路由器本质上就是一个NAT。
NAT原理:内部用户通过NAT设备,改源地址,很多公司局域网都用192,里面可以重复用IP地址,但是要连到互联网地址的外部的设备,全局唯一外网地址,就是在NAT服务器上面,这样就可以把不同地址映射到同一个地址去做联网,这样就节约了IPv4的地址。
11、多个内网客户端访问同一个目标地址+端口,源端口恰好一样,冲突了。
NAT其实是IP+端口一起改变的,多个内网客户端访问同一个目标地址+端口,如果也修改源端口,防止冲突,在NAT设备上维护一张表,每次有现在正在存在的连接的时候,把它端口选另外一个,就可以解决。
12、如果用UDP传输视频流,需要考虑什么?为什么?
考虑的问题:UDP发包每次发多少?怎么避免分片?怎么知道没丢包?怎么权衡传输效率和质量?
(1)因为MTU传输有限制,所以要分片。为什么避免分片,因为他会重组,分片+重组的过程中是消耗你的CPU资源,所以要避免。
(2)UDP不是可靠的协议,发丢了你也不知道。
(3)在UDP没有做流控的工作,很难处理,相当于重新弄一个TCP协议。
总结:用UDP做传输的话,就是怎么保证协议可靠,就行了。
13、什么是TCP协议?
大型旗下协议基本以TCP为主,因为UDP不可靠。
TCP是一个虚拟的概念,他就是一个状态,保持了一个TCP连接状态。
拔了网线,连接会断吗?
拔了网线——与TCP没有什么强耦合关系——因为TCP是状态——TCP有探活(定期探测对方在连接状态)——TCP保活决定连接是否会断开
14、三次握手学习(mss)
Tcpdump+Wireshark 抓包+包分析
三次握手做了什么事情:
15、TCP为什么总问Timewait?
Timewait是一个协议里面规定,但是又会影响你效率的地方,如果你的客户端/服务器有太多timewiat,很显然会占用端口。
Timewait recycle、Timewait reuse。有风险,万一冲突,可能会导致连接异常。
16、TCP丢包怎么办?
利用ACK的机制。
17、滑动窗口、流量控制/拥塞控制结合基础概念理解。
自学
18、为什么不直接用TCP通信呢?(主流HTTP1.1)
HTTP1.1让你关注你的业务本身,代码逻辑本身,而不是协议的实现。
其实TTP只是加多一层规矩。HTTP依然是TCP,只是这个规矩让用户更清晰。
HTTP1.1有哪些优化——长连接、部分传输、HOST、缓存等
19、传输中被插入网站怎么办?——HTTPS
HTTPS解密出来依然是HTTP。