计算机网络

本文深入探讨了计算机网络中的一些核心概念,包括:HTTP中浏览器处理URL的详细步骤,DNS解析过程,以及TCP与UDP的特性比较。此外,还涉及TCP的三次握手和四次挥手,以及网络攻击如SYN洪泛攻击和CSRF的防范措施。文章详细解释了TCP的保活计时器和拥塞控制策略,同时讨论了UDP在某些场景下优于TCP的原因及其可靠传输实现。最后,分析了TCP与UDP的数据传输过程,以及可能出现的粘包问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 地址映射成域名的过程,域名解析有两种方式:递归查询和迭代查询:

  1. DNS服务器首先会查询本地服务器资源中是否有要查询的域名记录
  2. DNS会继续查询本地浏览器缓存中是否有查询记录
  3. 主机向本地域名服务器查询时采用递归查询。也就是说本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器会替主机继续查询,向其他 根域名服务器发出查询请求报文。
  4. 主机域名服务器向根域名服务器的查询通常采用迭代查询。即根域名服务器收到本地域名服务器发出的迭代查询报文后,给出 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(连接请求报文不携带数据,但要消耗一个序号)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值