学习笔记—八股—网络

常见的HTTP状态码分哪几类?

HTTP状态码由三位数数字组成,分为五大类:1xx表示信息相应,2xx表示成功,3xx表示重定向,4xx表示客户端错误,5xx表示服务器错误

HTTP和HTTPS的主要区别是什么?

HTTP和HTTPS的核心区别在于安全性,HTTP明文传输数据,容易被窃听,篡改和冒充;而HTTPS在HTTP基础上增加了SSL/TLS加密层,通过加密防止窃听、校验机制防止篡改,数字证书防止冒充,从而保障通信安全。

说说TCP三次握手?

TCP三次握手就是客户端和服务器通过发送和确认三个包,保证双方收发能力正常,且同步初始化序列号,并建立可靠连接的过程。第一次握手是客户端发给服务器一个SYN报文,并且携带一个随机生成的初始化序列号。第二次我是是服务端收到SYN后,回发一个SYN+ACK报文,确认号是客户端序列号+1,同时自己也生成一个初始化序列号。第三次是客户端收到SYN+ACK后,发送一个ACK报文,确认号是服务端序列号+1,这时候客户端就处于已建立连接状态,服务端收到ACK后也处于连接状态,就正式连接了。

TCP和UDP的主要区别?

TCP是面向连接、可靠的字节流协议,保证数据不丢,不乱、不错,适用于准确性要求高的场景如文件传输和网页浏览;UDP是无连接、不可靠的数据报协议,传输速度快,适合对实时性要求高、能容忍少量丢包的场景如视频通话和在线游戏。

TCP为什么会粘包,怎么处理?

因为TCP是面向字节流的协议,没有消息边界概念。数据以字节流形式传输,发送缓冲区大小限制Nagle算法优化小包、MTU限制分片等都会导致数据在传输过程中被拆分或合并,从而产生粘包。主要有三种方法:1.定长消息:规定每条消息固定长度,不足补空;2.分隔符:用特殊字符分隔消息;3.长度字段+内容:消息头中包含内容长度,接收方先读长度再读对应字节数。其中第三个中最常用且灵活。

UDP为什么没有粘包问题?

UDP是面向数据报的协议,每个数据报都有明确的边界,其头部包含长度字段,操作系统能准确知道每个报文的长度,因此接收方可以按报文单位读取,天然保持消息边界。

TCP四次挥手的过程?

TCP四次挥手是断开链接过程,1.客户端发送FIN包,进入FIN_WAIT_1状态,2.服务端回复ACK,客户端进入FIN_WAIT_2状态,3.服务端发送FIN包,进入LASK_ACK状态,4.客户端回复ACK,进入TIME_WAIT状态等待2MSL后关闭,服务端收到ACK后立刻关闭。

为什么TCP建立连接是三次握手,而断开连接需要四次挥手?

因为TCP是全双工通道,断开需要双方各自独立关闭发送通道,当客户端发送FIN后,服务端可能还有数据要发送,因此必须先回ASK,等等数据发送完后在发送自己的FIN,导致无法合并,通常需要四次。而建立连接时,SYN和ASK可以合并发送。

第四次挥手后,客户端为什么要等待2MLS才真正关闭?

等待2MSL是为了确保服务端能收到最后一次ACK,丢失可重传FIN,使本次连接的所有网络报文都消失,避免与新建连接的报文混淆。

TCP/IP四层模型是什么?

TCP/IP四层模型是实际互联网使用的网络分层架构,分为网络接口层,网络层,传输层和应用层。网络接口层负责在物理网络上收发数据帧;网络层核心是IP协议,负责数据报的路由和转发;传输层提供端到端通信,TCP实现可靠传输,UDP提供无连接的快速传输;应用层包含各种高层协议如HTTP,FTP、DNS等,直接为应用程序提供服务。

OSI七层模型是什么?

物理层,数据链路层;网络层;传输层;会话层,表示层,应用层。

相关推荐
天选之子12314 小时前
DuckDB学习
jvm·学习
一只小菜鸡..14 小时前
Stanford CS144 学习笔记 (四):网络拥塞控制与 AIMD 算法
网络·笔记·学习
Hammer_Hans14 小时前
DFT笔记82
笔记
xuhaoyu_cpp_java15 小时前
SpringBoot学习(四)
java·经验分享·spring boot·笔记·学习
依然范特东15 小时前
动手学深度学习笔记--训练注意、梯度问题
人工智能·笔记·深度学习
Eira-Z17 小时前
git(持续学习中...)
git·学习
子非鱼942718 小时前
07-Flutter 鸿蒙实战 07:故事集列表与缓存设计
学习·flutter·缓存·华为·harmonyos
fanchenxinok18 小时前
学习笔记:LabVIEW中如何将解析S19/HEX的VI封装为子VI并供主VI调用
笔记·学习·labview·子vi
2301_8090511418 小时前
基本电子电路元件 学习笔记
笔记·学习
今天AI了吗19 小时前
Hermes Agent 搭建全流程:从本机试跑到可持续运行的个人 AI Agent
java·人工智能·python·学习·embedding