计算机网络基本知识汇总

article/2025/10/8 18:22:08

概述

OSI分层(7层)

  • 物理层、数据链路层、网络层、运输层、会话层、表示层、应用层

TCP/IP分层(4层)

  • 网络接口层、网络层、运输层、应用层

五层协议(5层)

  • 物理层、数据链路层、网络层、运输层、应用层

五层结构的概述

  1. 应用层:通过应用进程间的交互来完成特定网络应用
    • 数据:报文
    • 协议:HTTP, SMTP(邮件), FTP(文件传送)
  2. 运输层:向两个主机进程之间的通信提供通用的数据传输服务。
    • 数据:TCP:报文段,UDP:用户数据报
    • 协议:TCP, UDP
  3. 网络层:为分组交换网上的不同主机提供通信服务
    • 数据:包或IP数据报
    • 协议:IP
  4. 数据链路层:
    • 数据:帧
  5. 物理层:
    • 数据:比特

ARP地址解析协议:用来获取目标IP地址所对应的MAC地址的

各层协议

应用层

域名系统DNS

例:某用户通过主机A浏览西安交大的主页 www.xjtu.edu.cn
1. A向本地域名服务器DNS查询
2. 如果DNS上有www.xjtu.edu.cn的记录,就立即返回IP地址给主机A
3. 如果DNS上没有该域名记录,则DNS向根域名服务器发出查询请求
4. 根域名服务器把负责cn域的顶级域名服务器B的IP地址告诉DNS
5. DNS向B查询获得二级域名服务器C的IP地址,最终迭代查询到www.xjtu.edu.cn的ip直接返回DNS

HTTP
请求报文

请求报文

  • 常用的 HTTP 请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT;

  • GET:当客户端要从服务器中读取某个资源时,使用GET 方法。GET 方法要求服务器将URL 定位的资源放在响应报文的部分,回送给客户端,即向服务器请求某个资源。使用GET 方法时,请求参数和对应的值附加在 URL 后面,利用一个问号(“?”)代表URL 的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。

  • POST:当客户端给服务器提供信息较多时可以使用POST 方法,POST 方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。GET 一般用于获取/查询资源信息,POST 会附带用户数据,一般用于更新资源信息。POST 方法将请求参数封装在HTTP 请求数据中,以名称/值的形式出现,可以传输大量数据;

  • 请求头部:请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:

    1. User-Agent:产生请求的浏览器类型;
    2. Accept:客户端可识别的响应内容类型列表;星号 “ * ” 用于按范围将类型分组,用 “ / ” 指示可接受全部类型,用“ type/* ”指示可接受 type 类型的所有子类型;
    3. Accept-Language:客户端可接受的自然语言;
    4. Accept-Encoding:客户端可接受的编码压缩格式;
    5. Accept-Charset:可接受的应答的字符集;
    6. Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机;
    7. connection:连接方式(close 或 keepalive);
    8. Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie;
GET /search?hl=zh-CN&source=hp&q=domety&aq=f&oq= HTTP/1.1  
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, 
application/msword, application/x-silverlight, application/x-shockwave-flash, */*  
Referer: <a href="http://www.google.cn/">http://www.google.cn/</a>  
Accept-Language: zh-cn  
Accept-Encoding: gzip, deflate  
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; TheWorld)  
Host: <a href="http://www.google.cn">www.google.cn</a>  
Connection: Keep-Alive  
Cookie: PREF=ID=80a06da87be9ae3c:U=f7167333e2c3b714:NW=1:TM=1261551909:LM=1261551917:S=ybYcq2wpfefs4V9g; 
NID=31=ojj8d-IygaEtSxLgaJmqSjVhCspkviJrB6omjamNrSm8lZhKy_yMfO2M4QMRKcH1g0iQv9u-2hfBW7bUFwVh7pGaRUb0RnHcJU37y-
FxlRugatx63JLv7CWMD6UB_O_r  
响应报文

相应报文

状态码由三位数字组成,第一位数字表示响应的类型,常用的状态码有五大类如下所示:

  • 1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;
  • 2xx:表示服务器已成功接收到请求并进行处理;
  • 3xx:表示服务器要求客户端重定向;
  • 4xx:表示客户端的请求有非法内容;
  • 5xx:表示服务器未能正常处理客户端的请求而出现意外错误;

200 OK:表示客户端请求成功;

400 Bad Request:表示客户端请求有语法错误,不能被服务器所理解;

401 Unauthonzed:表示请求未经授权,该状态代码必须与 WWW-Authenticate 报头域一起使用;

403 Forbidden:表示服务器收到请求,但是拒绝提供服务,通常会在响应正文中给出不提供服务的原因;

404 Not Found:请求的资源不存在,例如,输入了错误的URL;

500 Internal Server
Error:表示服务器发生不可预期的错误,导致无法完成客户端的请求;

503 Service Unavailable:表示服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常;

响应头部:响应头可能包括:
- Location:Location响应报头域用于重定向接受者到一个新的位置。例如:客户端所请求的页面已不存在原先的位置,为了让客户端重定向到这个页面新的位置,服务器端可以发回Location响应报头后使用重定向语句,让客户端去访问新的域名所对应的服务器上的资源;
- Server:Server 响应报头域包含了服务器用来处理请求的软件信息及其版本。它和 User-Agent 请求报头域是相对应的,前者发送服务器端软件的信息,后者发送客户端软件(浏览器)和操作系统的信息。
- Vary:指示不可缓存的请求头列表;
- Connection:连接方式;

  1. 对于请求来说:close(告诉WEB 服务器或者代理服务器,在完成本次请求的响应后,断开连接,不等待本次连接的后续请求了)。keepalive(告诉WEB服务器或者代理服务器,在完成本次请求的响应后,保持连接,等待本次连接的后续请求);

  2. 对于响应来说:close(连接已经关闭); keepalive(连接保持着,在等待本次连接的后续请求); Keep-Alive:如果浏览器请求保持连接,则该头部表明希望WEB 服务器保持连接多长时间(秒);例如:Keep-Alive:300;

    • WWW-Authenticate:WWW-Authenticate响应报头域必须被包含在401 (未授权的)响应消息中,这个报头域和前面讲到的Authorization 请求报头域是相关的,当客户端收到 401 响应消息,就要决定是否请求服务器对其进行验证。如果要求服务器对其进行验证,就可以发送一个包含了Authorization 报头域的请求;

问题:
1. Http1.1与Http1.0的区别
http1.0使用非持久连接(短连接),而http1.1默认是持久连接(长连接),当然也可以配置成非持久连接。

Cookie和Session的作用和工作原理

FTP文件传送协议

运输层

  • 使用UDP和TCP协议的各种应用和应用层协议
应用应用层协议运输层协议
名字转换DNS(域名系统)UDP
文件传送TFTP(简单文件传送协议)UDP
路由器选择协议RIP(路由信息协议)UDP
IP地址配置DHCP(动态主机配置协议)UDP
网络管理SNMP(简单网络管理协议)UDP
远程服务器NFS(网络文件系统)UDP
多播IGMP(网际组管理协议)UDP
电子邮件SMTP(简单邮件传送协议)TCP
远程终端TELNET(远程终端协议)TCP
万维网HTTP(超文本传送协议)TCP
文件传送FTP(文件传送协议)TCP

- 端口
TCP和UDP都需要有源端口目的端口

(端口:用16位来表示,即一个主机共有65536个端口.序号小于256的端口称为通用端口,如FTP是21端口,WWW是80端口等.端口用来标识一个服务或应用.一台主机可以同时提供多个服务和建立多个连接.端口(port)就是传输层的应用程序接口.应用层的各个进程是通过相应的端口才能与运输实体进行交互.服务器一般都是通过人们所熟知的端口号来识别的)

服务端

常用的熟知端口

应用程序FTPTELNETSMTPDNSTFTPHTTPSNMPSNMP(trap)
熟知端口212325536980161162

登记端口 1024~49151

客户端

端口号由客户进程动态选择。数值范围 49152~65535

UDP

特点
  1. 无连接的(发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延)
  2. 尽最大努力交付(不保证可靠支付,因此主机不需要维持复杂的连接状态表)
  3. 面向报文的(UDP对应用层交下来的报文,添加完首部后就直接交付IP层。如果太长就会分片)
  4. UDP没有拥塞控制
  5. UDP支持一对一、一对多、多对一和多对多的交互通信
  6. UDP的首部开销小(只有8个字节,TCP有20个字节)
UDP报文


- 源端口:2字节 = 16bit = 0 ~ 65535
- 目的端口:2字节
- 长度:2字节
- 检验和:2字节

如果接受方UDP发现收到的报文中的目的端口号不正确(不存在对应端口号的应用进程),就会丢弃报文,并有网际控制报文协议ICMP(ping某个地址就是用的ICMP)发送“端口不可达”差错报文给发送方。

UDP用户数据报首部检验和计算时会在UDP用户数据报前增加12个字节的伪首部。

UDP伪首部

TCP

特点
  1. 面向连接的运输层协议。
  2. 点对点(一对一)通信。
  3. 可靠交付。
  4. 全双工通信(TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据)。
  5. 面向字节流。

TCP与UDP在发送报文时所采用的方式完全不同。TCP具体发送的报文由接收方给出的窗口值和当前网络拥塞的程度来决定一个报文段包含多少字节。而UDP发送的报文长度由应用进程给出。

TCP可靠传输工作原理

TCP连接的端点叫做套接字(socket)或插口。套接字socket = (IP地址:端口号)

停止等待协议

无差错情况
超时重传

每发送完一个分组就设置一个超时计时器。
- 注意:
1. 必须暂时保存已发送的分组的副本
2. 分组和确认分组都必须编号
3. 超市计时器设置的重传时间比数据在分组传输的平均时间更长一些

  • 确认丢失和确认迟到

确认丢失
确认迟到
如果接收方接收到数据发送确认没有被发送方接收到,那么发送方超时后会重新发送分组,并且接收方收到重复的分组会丢弃并重传确认。
如果接收方收到的确认是已经接受过的,那么会无视这个确认。

缺点

停止等待协议(自动重传ARQ)虽然简单,但是信道利用率低。

信道利用率

信道利用率U = TD / (TD + RTT + TA)

连续ARQ协议和滑动窗口协议

连续ARQ协议

窗口

TCP报文格式

TCP报文

  1. 源端口和目的端口 各占2字节
  2. 序号 4字节
  3. 确认号 4字节期望收到对方下一个报文的第一个数据字节的序号
  4. 数据偏移 4位
  5. 保留 6字节
  6. 紧急URG 当URG=1表示紧急指针有效
  7. 确认ACK
  8. 推送PSH
  9. 复位RST 当RST = 1时,释放连接并重新建立连接
  10. 同步SYN 当SYN = 1 ACK = 0时,表明这是一个连接请求报文段。
  11. 终止FIN FIN = 1,请求释放连接。
  12. 窗口
  13. 检验和
  14. 紧急指针
  15. 选项
TCP的三次握手

  1. 客户端TCP向服务端TCP发送一个特殊的TCP报文段,不包含应用层数据,报文中SYN=1,设置一个初始号client_isn,记录在报文段的序列号seq中。
  2. SYN报文段到达服务器后,为该TCP链接分配缓存和变量,并向客户端发送允许链接的报文段。其中,SYN = 1, ACK = client_isn+1,seq = server_isn;
  3. 客户端收到允许连接的报文后,客户端也给连接分配缓存和变量,客户端向服务端发送一个报文段,其中ACK = server_isn+1,SYN = 0,并且由于连接已经建立所以现在可以携带应用层数据。
TCP四次挥手


1. 客户端发送连接释放报文段,报文中FIN = 1, seq = u;
2. 服务端接收到连接释放报文后发出确认报文,其中ACK = 1; seq = v; ack = u + 1;
3. 服务端在发送完数据后,发送连接释放报文FIN = 1, seq = w, ack = u + 1;并停止向客户端发送数据。
4. 客户端收到连接释放报文后,发送确认报文, ACK = 1; seq = u + 1; ack = w + 1;并且进入等待2MSL,防止服务端没有接收到确认报文,重传报文。并且使连接产生的报文都消失。

TCP协议的连接是全双工连接,一个TCP连接存在双向的读写通道。
简单说来是 “先关读,后关写”,一共需要四个阶段。以客户机发起关闭连接为例:
1. 服务器读通道关闭
2. 客户机写通道关闭
3. 客户机读通道关闭
4. 服务器写通道关闭

TCP拥塞控制
拥塞控制和流量控制的区别

流量控制针对的是点对点之间的(发送方和接收方)之间的速度匹配服务,因为接收方的应用程序读取的速度不一定很迅速,而接收方的缓存是有限的,就需要避免发送的速度过快而导致的问题。拥塞控制是由于网络中的路由和链路传输速度限制,要避免网络的过载和进行的控制。

拥塞控制算法

拥塞控制算法主要包含了三个部分:慢启动、拥塞避免和快速回复

  1. 慢启动

慢开始算法的思路就是,不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小。一般一开始为1个MSS,之后翻倍这样来增加,呈指数增长。其中1、慢启动过程有一个阈值ssthresh,一旦到达阈值就进入拥塞避免模式。这是第一种离开结束慢启动的方式2、如果收到了一个丢包提示,就将cwnd设为1并且重新开始慢启动过程,这时要把阈值ssthresh设为当前cwnd值的一半。3、如果收到了三次冗余的ACK,就执行一次快速重传并且进入快速恢复状态,这是最后一种结束慢启动的过程。

  1. 拥塞避免

进入拥塞避免说明cwnd值大约是上一次遇到拥塞是的一半,这时候不能翻倍,而是将cwnd的值每次增加一个MSS。结束的过程有两种可能:1、当出现超时时,将cwnd值设为1个MSS,并且将ssthresh阈值设为当前cwnd值的一半。2、当收到三个冗余ACK时,将ssthresh阈值设为当前cwnd值的一半,并且将cwnd值设为当前cwnd值的一半加3,即ssthresh阈值加3,并且进入快速恢复状态。

  1. 快速恢复

快速恢复就是指进入快速恢复前的一系列操作,即将ssthresh阈值设为当前cwnd值的一半,并且将cwnd值设为当前cwnd值的一半加3,即ssthresh阈值加3,之后进入拥塞避免状态,即每次cwnd的值加1个MSS。

网络层

协议

  • 地址解析协议 ARP
  • 网际控制报文协议 ICMP
  • 网际组管理协议 IGMP

IP

IP地址分类:
- A类:1.0.0.0~126.255.255.255,默认子网掩码/8,即255.0.0.0 (其中127.0.0.0~127.255.255.255为环回地址,用于本地环回测试等用途);

  • B类:128.0.0.0~191.255.255.255,默认子网掩码/16,即255.255.0.0;

  • C类:192.0.0.0~223.255.255.255,默认子网掩码/24,即255.255.255.0;

  • D类:224.0.0.0~239.255.255.255,一般于用组播

  • E类:240.0.0.0~255.255.255.255(其中255.255.255.255为全网广播地址),E类地址一般用于研究用途


http://chatgpt.dhexx.cn/article/m1IpHCF3.shtml

相关文章

计算机网络知识

计算机网络的组成 IP&#xff1a; ip地址是有网络地址【前面部分】主机地址【后面部分】组成子网掩码&#xff1a;子网掩码和ip地址做&与运算&#xff0c;结果和ip一致的部分就是网络地址&#xff0c;结果不一致的表示网段范围默认网关&#xff1a;默认网关相当于你路由的…

计算机网络知识点汇总(王道)

目录 第 1 章 计算机网络概述 1.1 计算机网络的组成 1.2 计算机网络的分类 1.3 性能指标 1.3.1 带宽 1.3.2 吞吐量 1.3.3 时延 1.3.4 时延带宽积(链路容量) 1.3.5 往返时延RTT​ 1.3.6 利用率 1.4 分层结构 1.4.1 OSI参考模型&#xff08;7层&#xff09; 1.4.2 T…

计算机网络知识点总结提纲(谢希仁)

1、IOS/OSI对王道书上的缩减总结 (清晰pdf&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1f6DqMsHky4kP8i9WQLvCew?pwdthe3 提取码&#xff1a;the3 --来自百度网盘超级会员V3的分享) 2、王道书上物理层讲解的个人领悟之&#xff1a;奈氏准则和香浓定理 2.1 产生原…

计算机网络——计算机网络知识脑图

摘要 本博文主要分享计算机网络相关知识脑图&#xff0c;帮助大家更好的深入学习计算机网络相关知识&#xff0c;同时也介绍博主计算机网络专栏相关博文。同时介绍计算机网络学习书籍&#xff0c;有需要的小伙伴请自取。如果你觉得有用的话&#xff0c;请关注我的博客。 计算机…

计算机网络知识点总结

文章目录 一、概念1、什么是计算机网络&#xff1f;2、计算机网络协议、接口和服务的概念3、OSI与TCP/IP各层的结构与功能 二、物理层三、数据链路层四、网络层1、动态路由算法&#xff1a;距离-向量路由算法和链路状态路由算法2、网络地址转换&#xff08;NAT&#xff09;3、地…

计算机网络知识汇总(超详细整理)

文章目录 前言一、计算机网络概述1 互联网的构成2.网络分类3.接入网4.网络核心的两大功能①路由②转发 5.网络分层①OSI 7层模型②TCP/IP 4层模型③两种模型比较 二、物理层1.物理介质①引导型介质②非引导型介质 2.数据交换方式①分组交换②电路交换 3.信道复用①频分复用②时…

计算机网络知识点整理

目录 第一章&#xff1a;概述1. 五层协议2. 网络协议的三要素&#xff1a;3. 网络为什么要分层&#xff1f; 第二章&#xff1a;物理层1. 奈氏准则2. 香农定理3. 传输介质4. 四大特性 第三章&#xff1a;数据链路层1. 局域网2. 广域网3. CSMA/CD4. 以太网速率对比5. CSMA/CD与C…

计算机网络知识点全面总结,图文并茂,方便大家学习

一、计算机网络概述 1.1 计算机网络的分类 按照网络的作用范围&#xff1a;广域网&#xff08;WAN&#xff09;、城域网&#xff08;MAN&#xff09;、局域网&#xff08;LAN&#xff09;&#xff1b; 按照网络使用者&#xff1a;公用网络、专用网络。 1.2 计算机网络的层次…

计算机网络知识汇总(超详细)

目录 第一章 概念 组成 功能 和 分类 计算机网络概念 计算机网络功能 计算机网络的组成 计算机网络的分类 总结 标准化工作及相关组织 标准化工作 标准化工作相关组织 总结 计算机网路的速率&#xff0c;带宽&#xff0c;吞吐量 1 速率 2 带宽 3 吞吐量 计算机…

硬件工程师成长之路(11)——职业规划

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言一、求学之路1、提升学历2、获得职业资格证书 二、钻研之路1、电路设计进阶——从系统角度看电路1、盘点电子产品…

一位阿里软件测试工程师的35岁职业规划,他为什么没有被裁?

目录 职业生涯的规划 选择大于努力 个人能力提升 【那怎么才能避免35岁被优化呢&#xff1f;】 跳槽还是坚持&#xff1f; 技术路线还是管理路线&#xff1f; 国内的互联网行业发展较快&#xff0c;所以造成了技术研发类员工工作强度比较大&#xff0c;同时技术的快速更新…

软件工程师职业规划

更多资料&#xff0c;搜索或扫码关注公众号&#xff1a;数说Cloud

职业发展规划之软件工程师

编者按&#xff1a;所谓知己知彼&#xff0c;方能百战不殆。无论是面临就业的大学生&#xff0c;还是考虑再择业的职场人&#xff0c;都离不开一个清晰的职场目标并为之不懈的努力。小编在这里对各行业进行信息梳理&#xff0c;希望对您有所帮助。 软件工程师的工作在最近几年变…

软件测试的职业发展和规划(一)

作为很多软件测试岗位的朋友来说&#xff0c;职业发展和规划一直是一个比较模糊的概念&#xff0c;知道其重要&#xff0c;却不知如何规划更符合自己的实际情况。下面&#xff0c;我们就分三种情况来简单说一说。 一、高管理-低技能 即是我们通常所说的管理路线&#xff01;在…

软件测试职业发展规划

【原创】软件测试职业发展规划 之前有同学问我软件测试工程师应该如何发展&#xff0c;感觉有些迷茫。问我什么时候应该学自动化&#xff1f;什么时候应该学性能&#xff1f;我是学习java好&#xff0c;还是学习html&#xff1f;还是python? 下图&#xff0c;我给出了一个测试…

软件工程职业规划

一、语言的选择 Python、JAVA、C#、PHP、C、VB……10多种热门的开发语言&#xff0c;哪一种最有发展潜力呢&#xff1f;其实开发语言只不过是一个工具&#xff0c;“与其分散进攻&#xff0c;不如全力一击”&#xff0c;无论是哪一种开发语言&#xff0c;只要您全力地去学习&a…

软件测试工程师的职业规划

读者提问&#xff1a; 软件测试工程师如何做职业发展规划&#xff0c;有什么比较好的建议给到咱们测试萌新吗 &#xff1f; 阿常回答&#xff1a; 两个大的发展方向&#xff1a;1、技术类&#xff1b;2、管理类。 一、走技术发展路线 1、测试专家&#xff0c;比如 “测试架构师…

五年程序员谈软件工程师做职业规划的重要性

导语&#xff1a;过来人告诉你软件工程师这个金饭碗不是那么容易端稳的&#xff0c;做好职业生涯规划&#xff0c;给自己定一条路线&#xff0c;让自己在这条路线上一步一步走下去&#xff0c;才是好职业好发展的前提。 写这篇文章源于某条微博评论&#xff0c;原内容大概是一个…

软件行业职业规划

每个IT心中都有一个自己的职业生涯规划&#xff0c;而且不得不承认&#xff0c;在这个行业里面工作时间长了&#xff0c;难免会丧失很多激情。以下是个人的职业规划&#xff0c;希望这个激情的火种能继续燃烧&#xff0c;并希望能给在软件路上或正准备在软件路上的人一个参考。…

我的职业生涯规划(软件工程)

原本打算在语雀发文章 但是现在要vip&#xff0c;文章才能公布到互联网 以后笔记先在语雀整理 方便一点https://www.yuque.com/juhao-pqdor/goeie3 整理一下自己的笔记 弥补一下以前没写博客的遗憾吧 二十载求学路将尽&#xff0c;行文至此&#xff0c;思绪万千。求学之路始…