整理一些面试重点以及自己的理解,请大佬指正:
OSI 7层模型
7.应用层: 针对特定应用
6.表示层: 数据格式和网络标准数据格式的转换
5.会话层: 管理会话,建立和断开链接
4.传输层: 数据传输,管理原地址和目标地址
3.网络层: 运输路线管理与路由选择
2.数据链路层: 进行相邻结点的数据传输
1.物理层: 电信号和光信号
使用网购举例:传输层来管理卖家买家的详细地址,网络层来确定快递运输使用的交通工具,网络层来确定快递送达的最优路线。
TCP/IP四层协议
4.应用层(业务逻辑) DNS SSH HTTP FTP
3.传输层 TCP UDP
2.网络层 IP
1.数据链路层 ARP
0.物理层
网络传输过程必须要依赖的五个元素:
目标IP
目标端口号
源地址IP (拒收退回方便,反馈信息方便)
源端口号
协议(约定)
笔试
知名端口号(0-1023): ssh–22 ftp–21 telnet–23(测试网络是否通畅) http–80 https–443、 DNS–53
(不属于知名端口号)固定端口号:mysql-3306 Tomcat-8080
动态端口号:1024-65535
端口号范围是:0-65535,分为知名端口号和动态端口号。一个程序可以绑定多个端口号,一个端口号只能被一个程序使用。
UDP和TCP
UDP:无连接(发短信),不稳定,面向数据报(整体)
TCP:有连接(打电话),稳定,面向数据流(无法确定信息边界,对开发者不友好)
TCP :既有发送缓冲区,又有接受缓冲区
UDP :没有发送缓冲区 只有接受缓冲区
相当于快递驿站,快递小哥不用等到你忙完取快递,提高传送消息的效率
数据传输的过程:从A端应用层逐层向下,每下一层封装各层头信息,到达数据链路层后加头帧和尾帧后向上层传输后由路由转发至B端数据链路层,之后逐级向上分用,将头信息去除然后向上转发,最终转发信息至B端应用层。
封装/分用 :简言之卖家打包产品为封装,买家拆箱为分用
。
交互过程 :PC(IP)—交换机—路由器—路由器—服务器
经典面试问题:输入URL后会发生什么?
补充:
IP地址与MAC地址(全球唯一的物理地址,Windows以-分割,Linux以:分割)
_wifi网卡和本地连接网卡,MAC地址通过工具还是可以人为篡改的,也不是一成不变的,可以以非正常手段篡改。
- 全双工和半双工:
全双工:发送端或是接收端既能发送消息也能接收消息(UDP,TCP)
半双工:发送端只能发送消息,接收端只能接收消息
TCP连接机制:
TCP三次握手
1、为什么需要三次?
- 俩次握手必不能证明对方的接受和发送数据能力;
- 四次握手可以,但是没有必要。
TCP四次握手
1、3次挥手行不行?
- 有可以可以,有可能不可以。
- 如果没有带结束的任务,服务器的俩次挥手就可以合并(捎带应答)
TCP是面向数据流传输数据,那么如果出现沾包或数据不全的问题该怎么解决?
- 1.以\n作为数据流的边界
- 2.发送固定大小的数据流信息
Q:如何使用UDP实现稳定传输?
A: 在应用层参考TCP实现稳定性的特性来设计UDP。
Q:TCP如何保证稳定性?
A:8大特性之中的5大特性。