目录
- http中浏览器一个URL的流程,这个过程中浏览器做些什么,URL包括哪三个部分
- 域名解析
- 本机如何得知DNS服务器地址?
- 七层OSI及各层网络协议
- 各层网络设备
- TCP和UDP(首部)(编程步骤)
- 为什么UDP有时比TCP更有优势?
- tcp三次握手
- 什么是SYN洪泛攻击及解决?(三次握手机制有什么问题?)
- 如果已经建立了连接,但是客户端突然出现故障了怎么办?
- 为什么不采用“两次握手”建立连接呢?
- TCP四次挥手
- 为什么连接的时候是三次握手,关闭的时候却是四次握手?
- 为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
- 三次握手如果第三次ack包丢失怎么办
- 保活计时器
- TCP校验和步骤
- 流量控制
- 拥塞控制
- 拥塞控制和流量控制的区别?
- 采用滑动窗口可能会出现什么问题,怎么解决的
- TCP如何实时监测断线情况
- tcp接收数据不完整如何解决
- 既然 IP 层会分片,为什么 TCP 层还需要 MSS 呢?
- udp如何实现可靠性传输
- udp在应用层实现可靠传输的意义在哪
- 粘包
- TCP 报文粘连的解决方法:
- 数据从一端发送到另一端的过程
- 链路层和网络层的区别
- ARP毒化
- CSRF攻击和防范
http中浏览器一个URL的流程,这个过程中浏览器做些什么,URL包括哪三个部分
- 浏览器向DNS服务器查找输入URL对应的IP地址。
- 浏览器搜索自身的 DNS 缓存
- 搜索操作系统 DNS 缓存
- 读取本地 host 文件
- 本机先向本地域名服务器进行递归查询
- 本地域名服务器采用迭代查询,向一个根域名服务器查询,得到顶级域名服务器的 IP。
- 查询顶级域名服务器,得到权限域名服务器的 IP。
- 再查询权限域名服务器,得到域名的 IP,缓存并返回
- DNS服务器返回网站的IP地址。
- 浏览器根据IP地址与目标web服务器在80端口上建立TCP连接
- 浏览器获取请求页面的html代码。
- 浏览器在显示窗口内渲染HTML。
- 窗口关闭时,浏览器终止与服务器的连接。
域名解析
域名系统 DNS 是因特网使用的命名系统,用于把便于人们记忆的主机名转换为便于机器处理的 IP 地址。DNS 协议主要运行在 UDP 上,使用 53 号端口。
域名解析是把域名映射成 IP 地址或者把 IP 地址映射成域名的过程,域名解析有两种方式:递归查询和迭代查询:
- DNS服务器首先会查询本地服务器资源中是否有要查询的域名记录
- DNS会继续查询本地浏览器缓存中是否有查询记录
- 主机向本地域名服务器查询时采用递归查询。也就是说本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器会替主机继续查询,向其他 根域名服务器发出查询请求报文。
- 主机域名服务器向根域名服务器的查询通常采用迭代查询。即根域名服务器收到本地域名服务器发出的迭代查询报文后,给出 IP 地址或者给出下一步查询的服务器。
本机如何得知DNS服务器地址?
通过DHCP协议, 当连接到网络后, 本机会发送DHCP广播报文向附近的DHCP服务器请求ip,DHCP收到后会将ip地址和DNS服务器地址都推送过来。
七层OSI及各层网络协议
应用层 : 为特定应用程序提供数据传输服务,例如 HTTP、DNS 等协议。数据单位为报文。
表示层 : 数据压缩、加密以及数据描述
会话层 : 建立及管理会话
运输层 : 为进程提供通用数据传输服务。 主要包括TCP和UDP两种协议。
网络层 : 为主机提供数据传输服务。 主要任务是将上层传下来的报文段封装分组传输。主要协议为IP协议。针对主机与主机之间的数据传输。
数据链路层 : 将网络层传下来的报文段数据封装成帧。
物理层 : 将帧转换为数字信号或模拟信号放到传输介质上传输
各层网络设备
TCP和UDP(首部)(编程步骤)
1、 TCP面向连接 (如打电话要先拨号建立连接); UDP是无连接 的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
4.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP对系统资源要求较多,UDP对系统资源要求较少。
为什么UDP有时比TCP更有优势?
UDP以其简单、传输快的优势,在越来越多场景下取代了TCP,如实时游戏。
(1)网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。
(2)TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP内置的系统协议栈中,极难对其进行改进。
采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响。
tcp三次握手
- 第一次握手:客户机的TCP首先向服务器的TCP发送一个连接请求报文段。这个特殊的报文段中不含应用层数据,其首部中的SYN标志位被置为1。另外,客户机会随机选择一个起始序号seq = x(连接请求报文不携带数据,但要消耗一个序号)。