计算机网络基础

本文深入探讨网络协议,包括OSI七层模型和五层模型的区别,详细解析TCP/IP协议群,如TCP的三次握手、四次挥手,以及IP寻址。此外,介绍了UDP协议的特性,Wireshark网络协议分析器的用途,以及HTTP协议的工作原理。同时,讨论了Socket编程在实际应用中的地位和作用。

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

目录

一、面试

二、OSI模型

2.1、OSI七层模型

2.2、五层模型与OSI模型区别

三、TCP/IP协议群

3.1、需要解决协议群的五个问题

3.2、TCP

3.3、IP协议

四、UDP协议

五、Wireshark

六、Socket编程

七、HTTP协议


一、面试

HTTP常见状态码一些状态码分享给大家,文章底附上了腾讯云的文档中心整理的状态码 (⁄ ⁄•⁄ω⁄•⁄ ⁄)https://blog.youkuaiyun.com/weixin_48554146/article/details/122793898

计算机网络面试题整理了自己学过的面试题,以及网络上别人整理过的 ( ̄^ ̄)ゞ感觉很全的 (∩•̀ω•́)⊃--*⋆https://blog.youkuaiyun.com/weixin_48554146/article/details/122799637

二、OSI模型

2.1、OSI七层模型

应用层

只关心业务逻辑,不关心数据的传输

  • 应用层(Application Layer)是OSI参考模型的最高层,其功能是直接向用户提供服务。

  • 它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系

表示层

负责协商用于传输的数据格式,并装换数据格式

  • 压缩和解压缩:为了减少数据的传输量,这一层还负责数据的压缩与恢复

  • 数据的加密和解密:可以提高网络的安全性

会话层

负责管理两个联网实体的连接

  • 两个联网实体:可以是用户端跟服务器,也可以是服务器跟服务器

  • 建立连接 ---> 维持通信 ---> 释放连接

传输层

负责将数据从一个实体传输到另一个实体,但不负责数据传输的方式

  • 数据分割重组:数据量大将数据拆分,并封包,后按顺序重组

  • 纠错:在数据传输过程中出现问题后采取方式进行纠正

  • 管理连接:处理数据的频繁交换

  • 流量控制:控制传输数据的速率

  • 端口寻址:我们通常说的,TCP UDP就是在这一层,端口号既是这里的“端”

网络层

负责把一个封包从一个IP地址传输到另一个IP地址

  • 路由算法:目的在于防止阻塞,并进行差错检测

  • 这一层就是我们经常说的IP协议层,IP协议是Internet的基础

数据链路层

确保两个临近设备间数据的传输,并隐藏底层实现

  • 将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测

  • 数据链路层又分为2个子层:逻辑链路控制子层(LLC)和媒体访问控制子层(MAC)

物理层

封装和隐藏具体的传输手段,并且提供稳定的传输接口

  • 蓝牙、WIFI、光纤。。。

  • 通过物理介质传输比特流

2.2、五层模型与OSI模型区别

分层设计较为臃肿,并非每一层都为必要

  • 删除了会话层,会话是虚拟概念不是必须的

  • 删除了表现层,数据压缩、数据格式转换不是应用必须的

三、TCP/IP协议群

3.1、需要解决协议群的五个问题

1.报文拆分

  • 数据量大,网络底层设备不支持

  • 复用路径

2.增加协议头

数据分块后在接手端需要重组,所以需要使用头部来添加一些描述字段

3.数据在相邻设备间数据传递

4.路由和寻址

5.数据重组

3.2、TCP

连接

  • 是虚拟、抽象的概念

  • 能让两个通信的程序间确保彼此都在线

  • 加快响应请求速度

  • 连接也被称为会话(Session)

  • 使通信更稳定、安全

  • 消耗更多资源

全双工

  • 单工:任何时刻数据只能单向发送

  • 半双工:允许数据在两个方向上传输,在某一时刻,只允许数据在一个方向上传输

  • 全双工:任何时刻都能双向发送数据,至少需要两条链路

无损传输

  • 使无序的数据恢复原有顺序

  • 多个接收方时,都能收到无损副本

3.2.1、TCP三次挥手、四次握手

  • 连接过程(三次握手)

  • 断开连接过程(四次挥手)

【注意】中断连接端可以是Client端,也可以是Server端

确认应答超时重传是 TCP 可靠性中最核心的机制

3.2.2、传输数据

报文拆分

顺序保证

可自行百度搜索TCP滑动窗口,来查看TCP端特别多的时候,该如何排序

  • TCP序号:发送序号(Seq)、接受序号(Ack)

  • 一个端的发送序号是另一个端的接受序号

TCP头-9个标志位

  • NS、CWR、ECN:TCP扩展协议

  • ECN:显示拥塞控制协议,有助于帮助解决延迟和丢包问题

  • URG:紧急标志位,像远程控制服务器,按CTRL+C

  • SYN(Synchronization sequence number):同步序号

  • FIN(finish):终止连接

  • ACK(Achnowledgment):响应

  • PSH(push):传送数据

  • RST(Rest Connection):重置连接

3.2.3、TCP协议周边配置

  • 纠错能力:保证数据可靠性

  • 拥塞控制能力:网络拥堵的时候,传输慢一点

  • Checksum:是一个函数,把原文映射到一个不可逆的16bit的编码中,这样就可以知到原文传输过程中有没有发生变化,发生变化就不接受,另一端自动会发送一份新的

  • 流控能力:让两端协商一个合理的收发速率,利用滑动窗口

3.3、IP协议

3.3.1、IPv4协议

寻址

IPv4地址(32位:4*8):逐级寻址

寻址过程

寻址步骤

1 & 1 = 1 , 1 & 0 = 0 , 0 & 1 = 0 , 0 & 0 = 0

  • 1-找到顶层网络:

最顶层的网络号和子网掩码做位运算得到:顶层网络

103.16.3.1 & 255.0.0.0 = 103.0.0.0(顶层网络)PS:255=111

  • 2-找到下一层网络

用IP地址和下一级的子网掩码做位与得到:下一级网络

103.16.3.1 & 255.255.0.0 = 103.16.0.0(下一级网络)

  • 3-找到再下一层网络

使用255.255.255.0子网掩码找到下一级网络:

103.16.3.1 & 255.255.255.0 = 103.16.3.0(再下一级网络)

  • 4-定位设备

设备就在子网 103.16.3.0 中,最终找到设备号是 1

子网掩码不一定都是255,默认是255而已

路由

  • 若寻找的IP地址不在局域网中,需要路由找到去往对应网络的路径

  • IP地址和子网掩码位与的过程是由路由算法实现的

3.3.2、IPv6协议

IPv4只能支持43亿设备,不够用

IPv4协议与IPv6协议区别

区别一:地址

  • 地址数量:IPv4有4个8位,共32位,IPv6有8个16位,共128位

  • 分割符号:

    • IPv4地址用 .分割,如 103.28.7.35 每一个是8位,用0-255的数字表示

    • IPv6地址用 :,如 0123:4567:89ab:cdef:0123:4567:89ab:cdef,每个是一个16位的16进制数字,就是4个符

  • 书写方式:IPv6地址可简写

区别二:寻址

  • 全局单播

    • 站点前缀(Site Prefix):48bit,一般是由ISP,或者RIR(地区性互联网注册机构),将IP地址分配给运营商

    • 子网号(Subnet ID):16bit,用于站点内部区分子网

    • 接口号(Interface ID):64bit,用于站点内部区分设备

  • 本地单播

定义:给定地址,本地网定位设备

例子:fe80::123e:456d。Link-local必须以fe80开头

扩展:fe80开头就像169.254.x.x,是这个网段里没人给你分ip,自动协商的地址,其地址不能在网络上路由,也就是说,通常无法用于上网 。现在各大运营商用的ipv6

电信是240e开头的(240e::/20)

移动是2409开头的(2409:8000::/20)

联通是2408开头的(2408:8000::/20)

其他一些标记有teredo也不是原生ipv6

  • 多组多播

    • 需要以8个1,也就是 ff00 开头,后面跟上一个分组的编号

    • 所在的网络中已经定义了该分组编号,而且有设备可以识别这个编号

    • 拥有分组下设备的完整清单,并把数据发送给对应的设备们

    • IPv4也支持分组多播,但需要网络配置整体配合

区别三:新设备接入

新设备接入IPv6后,会使用IPv6的邻居发现协议(ND协议)为自己申请一个IP地址。当新设备需要发送信息到达目的地时,还可以通过ND协议广播查询目标设备。如果还需要路由,还可以通过ND查找路由器

传统:ARP协议(地址解析协议)每个节点存储许多额外信息

IPv6:更加无状态化,减少数据冗余带来的风险和负担

四、UDP协议

  • 出生晚

  • 协议简单,搭建在IP协议之上

  • 尽可能的减少通信机制,速度非常快

  • UDP协议的RFC只有两页

  • 在传输层提供直接发送报文的能力,报文时数据传输的最小单位

  • 发送报文,无法拆分数据

为什么不能直接调用IP协议?

IP协议只能把数据从一个网络接口发送到另一个网络接口,无法寻址到应用

UDP的封包格式

设计目标:允许用户直接发送报文的情况下最大限度的简化应用的设计

TCP与UDP区别

扩展

聊天室是否适合UDP?

不合适,聊天室并发高但流量不大,依赖可靠性

HTTP协议适不适合UDP?

合适,HTTP3.0就是建立在UDP上的

五、Wireshark

  • 是世界上应用最广泛的网络协议分析器

  • 在微观层面上看到整个网络正在发生的事情

Wireshark功能集

  • 深入检查数百个协议,并不断添加更多协议

  • 实时捕获和离线分析

  • 支持Windows、Linux、macOS、Solaris。。。好多平台

  • 提供GUI浏览,也可以通过TTY(命令行)

  • VoIP支持

  • Gzip支持

  • IPSec支持

六、Socket编程

线程模型

Socket模型位置

socket编程偏底层,学了可以加深对网络编程的理解,如果有时间的话可以学。但是还是建议要先把应用先学好,如果不是将来打算去做中间件的开发,socket编程了解一下即可

七、HTTP协议

目标:处理客户端和服务端之间的通信

请求

一次请求,分成请求头(Header)和请求体(Body),下面是一个请求头+请求体的实例

返回

一次返回,分成返回头(Header)和消息体(Body),200:状态码,OK:状态码的描述

URL

统一资源定位器(用输入法输入URL自动就显示)

DNS

DNS(Domain Name System):域名解析系统

DNS 查询分级缓存策略(DNS Query)

找缓存顺序:浏览器 ---> 操作系统 ---> 本地服务商 ---> 根服务器

  1. 先查询浏览器的本地缓存(通常在内存中)

  2. 本地没找到,查找操作系统的 host 文件,该文件在 Linux 中在 /etc/hosts 里

  3. 上述还没找到,DNS会查询本地服务提供商(ISP)

  4. ISP没找到,请求指向ROOT根服务器,返回顶级域名服务器地址

  5. 浏览器发送请求给顶级域名服务器,返回权威域名服务器地址

  6. 浏览器发送 Lookup 请求给权威域名服务器,找到具体DNS记录,返回给浏览器

DNS概述

DNS的数据以记录形式存储,就叫DNS记录。DNS记录的种类非常多,有30多种,每条记录描述了网址(URL)的一种关系

CDN

CDN:将请求分散到全世界各地,分发流量,加快访问速度

HTTPS和HTTP2.0及同源策略比较干。。。https://blog.youkuaiyun.com/weixin_48554146/article/details/122793344

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值