赞
踩
问题:1—14:第一章节:概述
15-21:第二章节:物理层
22-32:第三章节:数据链路层
22-52:第四章节:网络层
53-65:第四章节:运输层
66-70:第四章节:应用层
•1969 – 1990
从单个网络 ARPANET 向互联网发展。
•1985 – 1993
建成了三级结构的互联网 。
•1993 – 现在
全球范围的多层次ISP结构的互联网。
电信网络:提供电话、电报以及传真等服务。
有线电视网络:向用户传送各种电视节目。
计算机网络:使用户能在计算机之间传送数据文件。
发展最快的并起核心作用的是计算机网络
“三网融合”:是指电信网络、有限电视网络融入计算机网络
互联网:目前流行最广,事实上的标准译名。
互连网:局部范围互连起来的计算机网络
互联网 ≠ 互连网。
Internet:全球最大、最重要的计算机网络。它采用TCP/IP协议族作为通讯的规则,且前身是美国的ARPANET。
internet:是一个通用名词,它泛指由许多个计算机网络互连而成的计算机网络。它不一定采用TCP/IP协议族作为通讯的规则
•连通性(connectivity)
使上网用户之间可以非常便捷、非常经济地交换各种信息好像这些用户终端都彼此直接连通一样。
•资源共享(•Sharing)
实现信息共享、软件共享、硬件共享。由于网络的存在,这些资源好像就在用户身边一样地方便使用
请百度万维网。。
•互联网服务提供者ISP(Internet Service Provider):
在许多情况下,互联网服务提供者ISP就是一个进行商业活动的公司,例如,中国电信、联通、移动、腾讯、网易、3guu
提供接入到互联网的服务。
需要收取一定的费用
•互联网交换点IXP(Internet eXchange Point):
世界上较大的 IXP 的峰值吞吐量都在 Tbit/s 量级。
允许两个网络直接相连并快速交换分组。
常采用工作在数据链路层的网络交换机。
•标准发表:以RFC的形式(Request For Comments ):
所有的 RFC 文档都可从互联网上免费下载。
任何人都可以用电子邮件随时发表对某个文档的意见或建议。
但并非所有的 RFC 文档都是互联网标准。只有很少部分的 RFC 文档最后才能变成互联网标准。
RFC 文档按发表时间的先后编上序号(即 RFCxxxx,xxxx 是阿拉伯数字)。
从互联网的工作方式上看,可以划分为两大块:
边缘部分:
由所有连接在互联网上的主机组成,由用户直接使用,用来进行通信(传送数据、音频或视频)和资源共享。
核心部分:
由大量网络和连接这些网络的路由器组成,为边缘部分提供服务(提供连通性和交换)。
客户/服务器方式:
Client / Server 方式
简称为 C/S 方式
对等方式:
Peer to Peer 方式
简称为 P2P 方式
了解三者工作方式(比喻法,具体官方解释请百度):
一、区分集线器、交换机、路由器(比喻法)
某一天,你到你女友小芳(暂定这个名字吧)就读的学校去找她,那么你的做法是什么呢:
一、集线器的工作方式:
你站到学校中庭,大喊一声“小芳,我来你找你了!” (广播)
如果这个时候正好有别人也在大喊大叫,你就必须等他喊完了再喊。(排队)
如果你喊的时候不巧碰上另一个人跟你同时喊,那么你和他喊的内容都不能被听见。(冲突)
你喊的时候,是听不见别人说什么的,只有喊完了才开始竖起耳朵听。(半双工工作方式、监听)
果然,对面楼里传来了你女友的声音“你去死吧!” (响应)
二、交换机的工作方式:
你女友事先通知了你她的手机号码(Mac地址)。
你拨通了她的手机。(建立连接)
对她说“我来找你了,因为我想你想得要死,我的甜心,我的宝贝……”。(独享信道)
你的女友听得不耐烦,没等你说完就回了一句“肉麻死了”! (全双工方式)
三、路由器的工作方式:
你事先把你所有女友所在的XX系XX级XX班XX号座位的信息记录在你的粉红色笔记本上(建立路由表)
你找到了小芳的地址(IP地址),并且确定了如何才能找到她的途径 (路由选择) 。
你到学校门房问到了XX系所在的楼,又到XX系问到了XX班的教室,又到XX教室问到了XX号座位的位置……经过N次询问(N跳),你终于来到了小芳的面前。
具体区别:
路由器 | 交换机 | 集线器 | |
---|---|---|---|
工作层次 | 网络层 | 数据链路层 | 物理层 |
转发依据 | IP地址 | Mac地址 | Mac地址 |
功能 | 连接不同的网络 | 连接局域网中的主机 | 连接局域网中的主机 |
宽带影响 | 共享宽带 | 独享宽带 | 共享宽带 |
传输模式 | - | 全双工或半双工 | 半双工 |
注:
速率:
带宽:
吞吐量:
时延:
时延带宽积:
往返时间:
利用率:
应用层:
运输层:
网络层:
数据链路层:
物理层:
SDU:
OSI 把层与层之间交换的数据的单位称为服务数据单元 SDU (Service Data Unit)。
PDU:
OSI 参考模型把对等层次之间传送的数据单位称为该层的协议数据单元 PDU (Protocol Data Unit)。
任何两个同样的层次把 PDU (即数据单元加上控制信息)通过水平虚线直接传递给对方。这就是所谓的“对等层”之间的通信
SDU 可以与 PDU 不一样。
例如:可以是多个 SDU 合成为一个 PDU,也可以是一个 SDU 划分为几个 PDU。
可以理解为 下层提供给上层服务,上层不需要懂其下层原理,实现了上下层的“分离”。既下层是对上层来说,是透明的。
首部是前同步码,可以使接收方和发送方的时钟同步。尾部信息含有CRC校验码,可以用来检验信息在传输来的过程中是否出错。
基本概念:
物理层考虑的是怎么样才能在连接各种计算机的传输媒介上传输比特流,并且尽可能屏蔽掉不同传输媒介和通讯手段的差异,而不是指具体的传输媒介。
信道:
一般是用来表示向某一方向传送信息的媒体,一条信道往往包含一条发送信道和一条接收信道
从通信的双方信息交互的方式,可以有下面三种方式:
单向通信(单工通信): 只能由一个方向的通信而没有反方向的交互。无线电广播或有线电视广播就属于这种类型
双向交替通信(半双工通信): 通信双方都可以发送信息,但不能双方同时发送(当然也不能同时接收)。这种通信方式是一方发送另一方接收,过段时间后可以反过来。
双向同时通信(全双工通信): 通信的双方可以同时发送和接收信息
基带信号(即基本频带信号)
调制
仅对基带信号的波形进行变换,把数字信号转换为另一种形式的数字信号。把这种过程称为编码 (coding)。
使用载波 (carrier)进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号。经过载波调制后的信号称为带通信号(即仅在一段频率范围内能够通过信道)。
前序学习:常见的编码方式
自同步能力:
不归零制不能从信号波形本身中提取信号时钟频率(这叫做没有自同步能力)。
曼彻斯特编码和差分曼彻斯特编码具有自同步能力。
限制码元在信道上的传输速率的两个因素:
奈氏准则:
码元传输的最高速率 = 2W (码元/秒)
在带宽为 W (Hz) 的低通信道中,若不考虑噪声影响,则码元传输的最高速率是 2W (码元/秒)。传输速率超过此上限,就会出现严重的码间串扰的问题,使接收端对码元的判决(即识别)成为不可能。
信噪比
信噪比(dB) = 10 log10(S/N ) (dB)
香农公式:
C = W log2(1+S/N) (bit/s)
信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高。
只要信息传输速率低于信道的极限信息传输速率,就一定可以找到某种办法来实现无差错的传输。
奈氏准则:
激励工程人员不断探索更加先进的编码技术,使每一个码元携带更多比特的信息量。香农公式:
告诫工程人员,在实际有噪声的信道上,不论采用多么复杂的编码技术,都不可能突破信息传输速率的绝对极限。
复用 (multiplexing) :
允许用户使用一个共享信道进行通信。
复用器 (multiplexer) 和分用器 (demultiplexer):
频分复用 FDM (Frequency Division Multiplexing):
时分复用 TDM (Time Division Multiplexing):
波分复用:
利用光的波长进行不同划分的频分复用,其区别在于传播媒介的不同,其中需要光复用器和光分用器搭配使用
码分复用CDMA:
交换机(s1、s2):只有数据链路层和物理层
局域网最主要的特点:
局域网具有如下主要优点:
DIX Ethernet V2:世界上第一个局域网产品(以太网)的规约。
IEEE 802.3:第一个 IEEE 的以太网标准。
这两种标准的硬件实现可以在同一个局域网上互操作。
这两个标准标准只有很小的差别,因此很多人也常把 802.3局域网简称为“以太网”
IEEE委员会将局域网的数据链路层拆成两个子层,逻辑链路控制LLC子层和媒体接入控制MAC子层
数据链路层使用的信道一般都是共享信道,共享信道要着重考虑的一个问题是如何使众多用户合理而方便的共享通信媒体资源,这种技术上有两种办法:
静态划分信道:
这种划分方法优点是:
用户只要分配到了信道就不会和其他用户发生冲突
缺点是:
这种划分信道的方法就是代价高,不适合局域网的使用
动态媒体接入控制(多点接入):
局域网一般就是使用随机接入类型的信道
链路 (link) :
数据链路 (data link):
问题:
如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”,导致错误。(异步传输过程中)
解决:
字节填充
问题:
如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”,导致错误。(同步传输过程中)
解决:
零比特填充
CRC是一种差错检验方法,FCS是添加在数据后面的冗余码
可靠传输:数据链路层的发送端发送什么,在接收端就收到什么。
传输差错可分为两大类:
在数据链路层使用 CRC 检验,能够实现无比特差错的传输,但这还不是可靠传输。
要做到可靠传输,还必须再加上帧编号、确认和重传等机制。
对于点对点的链路,目前使用得最广泛的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。
PPP 协议在 1994 年就已成为互联网的正式标准 [RFC 1661, STD51]。
三个组成部分:
1.并行传输:
字符编码的各位(比特)同时传输;
2.串行传输(一般都是串行传输):
将组成字符的各位串行地发往线路;
有两种传输方式:
1)同步传输;
2)异步传输;
串行数据通信的方向性结构有三种:
1)单工;
2)半双工;(I2C)
3)全双工; (UART)
1).同步通信原理
同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。
采用同步通信时,将许多字符组成一个信息组,这样,字符可以一个接一个地传输,但是,在每组信息(通常称为帧)的开始要加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。在同步传输过程中,一个字符可以对应5~8位。当然,对同一个传输过程,所有字符对应同样的数位,比如说n位。这样,传输时,按每n位划分为一个时间片,发送端在一个时间片中发送一个字符,接收端则在一个时间片中接收一个字符。
同步传输时,一个信息帧中包含许多字符,每个信息帧用同步字符作为开始,一般将同步字符和空字符用同一个代码。在整个系统中,由一个统一的时钟控制发送端的发送和空字符用同一个代码。接收端当然是应该能识别同步字符的,当检测到有一串数位和同步字符相匹配时,就认为开始一个信息帧,于是,把此后的数位作为实际传输信息来处理。
2).异步通信原理
异步通信是一种很常用的通信方式。异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。当然,接收端必须时刻做好接收的准备。发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。异步通信的好处是通信设备简单、便宜,但传输效率较低(因为开始位和停止位的开销所占比例较大)。
3).同步通信与异步通信区别:
(1)同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信时不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。
(2)同步通信效率高;异步通信效率较低。
(3)同步通信较复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差。
(4)同步通信可用于点对多点;异步通信只适用于点对点。
(End)
转载于:https://www.cnblogs.com/yirenyang/p/4281101.html
给一个GPT回答
同步通信和异步通信都是计算机通信中的两种常见方式,它们的原理和区别如下:
- 同步通信是指发送方发送数据后会等待接收方响应后才继续进行下一步操作的通信方式。在同步通信中,发送方和接收方需要在同一时间段内进行通信,发送方需要等待接收方响应后才能进行下一步操作。同步通信具有通信效率高、数据传输可靠性高等优点,但当接收方不能及时响应时会出现阻塞的情况,从而影响通信效率。
- 异步通信是指发送方发送数据后不需要等待接收方响应就可以继续进行下一步操作的通信方式。在异步通信中,发送方和接收方可以在不同的时间段内进行通信,发送方无需等待接收方响应就可以继续进行下一步操作。异步通信具有通信效率高、通信灵活性好等优点,但由于发送方无法确定接收方何时会响应,可能会造成一些数据的丢失。
- 总的来说,同步通信和异步通信的区别在于是否需要等待对方的响应。同步通信需要等待对方的响应,通信效率较高但可能会出现阻塞的情况。异步通信不需要等待对方的响应,通信效率也较高,但可能会出现数据丢失的情况。选择哪种通信方式需要根据具体的应用场景来决定
网络层可以分为两个层面:
网络层的功能主要体现在为数据链路层提供端点之间的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。
tips: 网络层使用的就是数据报服务,网络层不提供服务质量的承诺(无连接)
不需要经过任何路由器是直接交付,反之,间接交付
全名是无分类域间路由选择
与:and操作
或:or操作
异或:!=操作
MAC地址是数据链路层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址
称IP地址为逻辑地址是因为IP地址是用软件实现的,
称MAC地址为物理地址是因为MAC地址已经固化到网卡上的ROM中
超网(supernetting)是与子网类似的概念–IP地址根据子网掩码被分为独立的网络地址和主机地址。但是,与子网把大网络分成若干小网络相反,它是把一些小网络组合成一个大网络–超网。
超网创建用来解决路由列表超出现有软件和管理人力的问题以及提供B类网络地址空间耗尽的解决办法。超网允许一个路由列表入口表示一个网络集合,就如一个区域代码表示一个区域的电话号码的集合一样。
目前盛行的外部网关协议边界网关协议(BGP)以及开放式最短路径优先(OSPF)路由协议都支持超网技术。
一个大的CIDR地址块往往包含很多小的地址块,所以在路由器的转发表中就利用较大的一个CIDR地址块来代替许多小的地址块,这中方法就是路由聚合,反之,就是路由划分,路由划分的好处是缩短了转发表的查找时间
tips:网络前缀越短的地址块所包含的地址数就越多
因为如果我们只用MAC地址的话,我们会发现路由器需要记住每个MAC地址所在的子网是哪一个(不然每一次收到数据包的时候路由器都要重新满世界地去找这个MAC地址的位置)。而世界上有248个MAC地址,这就意味着即使我们给每个MAC地址只留1字节的储存空间,每个路由器也需要256TB的内存!这显然是不可能实现的。这就是我们需要IP地址的原因了。和MAC不同的是,IP地址是和地域相关的。对于位于同一个子网上的设备,我们给他们分配的IP 地址前缀都是一样的,这个前缀就像邮政编码一样。这样,路由器过IP地址的前缀就能知道这个设备在哪个子网上了。现在,路由器只需要记住每个子网的位置即可,大大减少了路由器所需要的内存。
转载(有了MAC地址,为什么还要用IP地址?)
前置知识:
大概长这样
ARP流程
具体流程如下:
IP数据报首部的可变部分就是一个选择字段。选择字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度可变,从1字节到40字节不等。取决于所选择的项目。
tips:新版IPv6将IP数据报首部长度做成固定的了
大概流程:
其实就是为了节约时间(快速找到匹配的网络地址)而采取的算法方面的措施。
ICMP: 互联网控制报文协议
ICMP报文类型
ICMP 差错报告报文
:终点不可达:不可达主机、不可达网络,无效端口、协议
ICMP 询问报文
:回送请求/回答 (ping使用)
ICMP 报文格式
ICMP报文的前 4 个字节包含格式统一的三个字段:类型、代码、检验和 相邻的后四个字节内容与ICMP的报文类型有关
ICMP报文类型及功能
与IPV4相比,出现了以下几种特点:
既然提到了运输层为应用进程之间提供端到端的逻辑通信,那么就要详细说一说端口的概念
网络层中,通信的对象为不同的主机,而从运输层的角度来看,通信的对象为进程,而端口就代表了进程
也就是说,通过 ip 找到主机,通过端口找到对应进程
端口用一个 16 位端口号进行标志。
端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。
由此可见,两个计算机中的进程要互相通信,不仅必须知道对方的 IP 地址(为了找到对方的计算机),而且还要知道对方的端口号(为了找到对方计算机中的应用进程)
UDP和TCP是网络传输协议的两种类型,它们有以下的区别:
详细讲一下可靠性的区别:
当我们在传输数据时,可靠性是指发送方发送的数据能够在不丢失、损坏或重复的情况下被接收方正确地接收。TCP和UDP在可靠性方面的区别如下:
TCP的可靠性:TCP是可靠的传输协议,它使用了多种机制来确保数据的可靠传输。例如,TCP使用确认机制,即每次发送方发送数据后,接收方都会发送一个确认消息给发送方,告诉它已经收到了这些数据。如果发送方在一定时间内没有收到确认消息,它会重新发送数据,直到接收方正确地接收到数据为止。此外,TCP还使用了流量控制和拥塞控制机制,以确保发送方发送的数据不会超过接收方的处理能力,并避免网络拥塞。
UDP的不可靠性:UDP是不可靠的传输协议,它不提供确认、重传和流量控制等机制。在UDP中,发送方发送数据后,并不会收到接收方发送的确认消息,也不会对未确认的数据进行重传,如果发生数据丢失、损坏或重复,UDP也不会进行任何处理,因此无法保证数据的可靠传输。
总的来说,TCP提供了比UDP更可靠的传输服务,但是这也使得TCP的性能比UDP更低,因为它需要花费更多的时间和资源来维护连接和确保数据的可靠传输。而UDP则更加轻量级和快速,适用于那些对可靠性要求不高,但需要快速传输的场景。
在计算机中,不同进程的识别是通过进程标识符(Process ID, PID)来实现的。每个进程都有一个唯一的PID,用于标识这个进程。PID是一个整数值,通常是在进程创建时由操作系统自动生成的。
在Unix/Linux系统中,可以使用命令ps来查看当前系统中运行的进程,ps命令会显示每个进程的PID以及其他信息。例如,可以使用以下命令查看系统中所有进程的PID:
ps -ef
在Windows系统中,可以使用任务管理器来查看当前系统中运行的进程,任务管理器会显示每个进程的PID以及其他信息。另外,也可以使用命令行工具tasklist来查看系统中所有进程的PID,例如:
tasklist
进程的PID在操作系统中扮演着非常重要的角色,它被用于管理进程、进行进程间通信等操作。当一个进程需要与另一个进程进行通信时,通常会使用进程的PID来标识这个进程,并进行进程间通信。因此,每个进程的PID都是唯一且不可更改的,以确保不同进程之间的唯一性和可识别性。
在计算机网络中,端口(Port)是用于标识应用程序或网络服务的数字,它和IP地址一起用于唯一地标识一台计算机上的网络通信进程。具体来说,端口号是一个16位的无符号整数(取值范围是0~65535),其中一些端口已经被标准化为特定的应用程序或服务使用,这些标准化的端口号称为“Well-known Ports”。
下面是一些常见的端口号及其用途:
20, 21:FTP数据传输和控制端口
22:SSH远程登录协议端口
23:Telnet远程登录协议端口
25:SMTP邮件传输协议端口
53:DNS域名解析协议端口
80:HTTP协议端口,用于Web浏览器访问网页
110:POP3邮件收取协议端口
143:IMAP邮件收取协议端口
443:HTTPS协议端口,用于Web浏览器安全访问网页
3306:MySQL数据库端口
3389:Windows远程桌面协议端口
需要注意的是,端口号仅用于标识通信的应用程序或服务,它并不与物理设备相关联。在一台计算机上,多个进程可以同时监听同一个端口号,只要它们的IP地址不同。另外,也可以通过配置网络设备的端口转发等方式,将一个端口号映射到不同的物理设备或不同的进程上。
停止等待协议(Stop-and-Wait Protocol)是一种简单的数据传输协议,用于解决在可靠的通信信道上进行数据传输的问题。它是一种基于确认和重传机制的协议,常用于串行通信中,例如串口通信、红外通信等。
停止等待协议的基本思想是:发送方在发送数据时,等待接收方发送确认消息,接收到确认消息后再发送下一份数据;接收方在接收数据时,发送确认消息,等待发送方重传丢失的数据。具体来说,停止等待协议的数据传输过程如下:
停止等待协议简单易懂,但它存在的主要问题是效率低下。在停止等待协议中,发送方必须等待接收方的确认消息,这会导致发送方的发送速度大大降低。此外,当网络中发生丢包或延迟等问题时,停止等待协议的重传机制会导致发送方不断重传数据包,浪费网络带宽和计算资源。因此,实际中更常用的是一些具有更高效率和更可靠性的协议,如GBN和SR协议。
其中各字段的含义如下:
源端口(Source Port)和目的端口(Destination Port):分别用于标识源主机和目的主机的端口号,占用2个字节。
序列号(Sequence Number):用于标识TCP报文段中第一个数据字节的序列号,占用4个字节。
确认号(Acknowledgment Number):用于标识期望接收到的下一个数据字节的序列号,占用4个字节。
- 仅当ACK = 1时确认号才有效。当ACK = 0时确认号无效。
数据偏移量(Data Offset):用于表示TCP报文段中数据部分的起始位置相对于报文段起始位置的偏移量,以4个字节为单位。
保留位(Reserved):暂未使用,占用6个比特。
标志位(Flags):TCP报文段的控制位,包含URG、ACK、PSH、RST、SYN、FIN六个标志位,各占用1个比特。
- URG(紧急):URG = 1时,表明紧急指针字段有效。
- ACK(确认):ACK = 1时确认号才有效。当ACK = 0时确认号无效。
- PSH(推送):发送方TCP将PSH = 1,它用于告知接收方应该立即将数据交付给上层应用,而不需要等待缓存区填 满。
- RST(复位):RST = 1时,表明TCP连接中出现严重的差错,必须释放连接。
- SYN(同步):SYN=1 and ACK=0,表明这是一个连接请求字段,SYN=1 and ACK=1,表明同意建立连接
- FIN(终止):FIN=1时,表明此报段的发送方的数据已经发送完毕,并要求释放连接
窗口大小(Window):表示发送端可以接收的数据量的大小,占用2个字节。
校验和(Checksum):用于检查TCP报文段是否损坏,占用2个字节。
紧急指针(Urgent Pointer):表示紧急数据的末尾位置相对于序列号的偏移量,占用2个字节。
选项(Options):TCP选项,可选字段,长度不固定。
填充(Padding):用于填充TCP报文段,使得报文长度为4的倍数,长度不固定。
数据(Data):TCP报文段中的数据,长度不固定,最大长度由窗口大小决定。
上述字段共占用20个字节
滑动窗口(Sliding
Window)是一种流行的数据传输协议中的数据流控制技术。它用于在通信双方之间控制数据流的发送和接收,以便确保数据能够在网络中按序传输并且能够被正确处理。
在TCP协议中,滑动窗口是基于“可靠传输”机制实现的,发送方将一段连续的数据拆分成若干个数据包,接收方按顺序接收数据包,每收到一个数据包就将其从窗口中删除。发送方只有在收到接收方的确认消息后,才能将窗口向前滑动,并发送下一个数据包。同时,接收方可以向发送方发送一个确认消息,告诉发送方已经成功接收到了数据包,从而控制发送方发送数据的速度,保证数据传输的可靠性和流畅性。
滑动窗口还可以用来控制网络延迟和带宽利用率。通过改变窗口大小,可以控制数据包的数量和传输速度。如果窗口大小设置得过大,网络带宽可能会被过度使用,导致网络拥塞和延迟增加;如果设置得太小,网络带宽不能充分利用,导致传输效率降低。
滑动窗口技术是TCP协议的一个核心特性,它能够使数据传输更加高效、可靠。它也被广泛应用于其他数据传输协议中,如UDP和SCTP等。
RTO(Retransmission Timeout)是TCP协议中的一个重要参数,它用于计算数据包丢失后需要重传的时间,以保证数据包能够被正确地接收。RTO的计算过程如下:
初始化RTO:当TCP连接建立时,RTO被初始化为一个默认值,通常为3秒钟。这个值是TCP协议中的一个标准值,可以在不同的操作系统中进行修改。
计算RTT:当TCP发送一个数据包后,它会等待接收方返回确认消息。发送方会记录下这个数据包被发送的时间戳,当接收到确认消息时,发送方会记录下接收到确认消息的时间戳,并计算出RTT(Round Trip Time),即数据包从发送到接收的时间差。
计算SRTT:为了减小RTT的抖动,TCP使用加权平均数来计算SRTT(Smoothed Round Trip Time)。SRTT是RTT的平均值,其计算方式为:
SRTT = (1 - α) * SRTT + α * RTT
其中,α是一个介于0和1之间的值,通常为0.125,表示新的RTT占SRTT的12.5%的权重,旧的RTT占87.5%的权重。
计算RTTVAR:为了进一步减小RTT的抖动,TCP使用加权平均数来计算RTTVAR(Round Trip Time VARiance),即RTT的方差。其计算方式为:
RTTVAR = (1 - β) * RTTVAR + β * |SRTT - RTT|
其中,β是一个介于0和1之间的值,通常为0.25,表示新的RTT与SRTT的差值占25%的权重,旧的RTTVAR占75%的权重。这个差值使用绝对值,因为RTT的抖动可能是正的也可能是负的。
计算RTO:最后,根据SRTT和RTTVAR计算RTO。TCP使用下面的公式:
· RTO = SRTT + 4 * RTTVAR
这个公式计算的是一个安全的RTO值,它可以确保数据包在网络中的传输时间变化时能够被成功地传输。如果一个数据包在RTO时间内没有被确认,TCP就会认为它已经丢失,并进行重传。
需要注意的是,RTO的计算过程是动态的,每次计算都是基于之前的RTT和RTTVAR的。此外,TCP的不同实现可能会使用不同的α和β值,从而导致RTO的计算结果略有不同。
滑动窗口是TCP协议中实现流量控制的一种机制,它通过动态地调整发送方和接收方的窗口大小来控制数据的发送和接收。具体来说,发送方和接收方维护着两个窗口:发送窗口和接收窗口,用来控制发送和接收的数据流量。
发送窗口的大小取决于接收方的接收窗口大小和网络状况。当接收方的接收窗口大小变小或网络状况变差时,发送方的发送窗口也会相应地变小,以避免数据包的丢失和拥塞。发送窗口的大小由以下三个因素共同决定:
接收窗口的大小取决于接收方的缓冲区大小和已接收但未处理的数据包数量。接收窗口的大小由以下两个因素共同决定:
通过滑动窗口机制,TCP协议可以实现可靠的数据传输和流量控制,确保数据包能够正确地传输并避免网络拥塞。
出现问题:死锁
解决办法:持续计时器
tips:
糊涂窗口综合征(Silly Window
Syndrome)是指在TCP协议中,当接收方窗口非常小,且发送方发送的数据报文非常小,就会出现发送方发送过多的小数据包,导致网络拥塞和性能下降的现象。具体来说,糊涂窗口综合征的发生条件如下:
在这种情况下,发送方发送的数据包非常小,而且数量很多,这会导致网络拥塞和性能下降。这是因为网络中的路由器和交换机需要处理更多的数据包,而且每个数据包都需要消耗一定的带宽和网络资源。
为了避免糊涂窗口综合征,可以采用以下的解决方案:
- 在发送方和接收方之间采用流量控制,使得发送方发送的数据量不会超过接收方的窗口大小;
- 增加发送方发送的数据量,例如通过Nagle算法将多个小数据包组合成一个大的数据包,或者使用延迟确认技术,使得发送方可以发送更多的数据;
- 调整TCP窗口的大小,以便发送方和接收方之间可以传输更多的数据,同时避免过多的小数据包导致网络拥塞。
TCP协议的拥塞控制是一种用于调节发送方发送速率的技术,目的是防止网络拥塞和避免网络性能下降。TCP拥塞控制主要有以下几个方面:
通过这些拥塞控制技术,TCP协议可以自适应地调整发送速率,避免网络拥塞和性能下降,从而保证数据的可靠传输。
拥塞控制和流量控制的区别?
- 拥塞控制:
·1.防止过多的数据注入到网络中,避免网络中的路由器或链路过载
·2.是一个全局性的过程,涉及到所有主机、路由器,以及与降低网络传输性能有关的所有因素。- 流量控制
·1.抑制发送端发送数据的速率以使接收端来得及接收
·2.点对点通信量的控制,是个端到端的问题
最好看看:深入浅出TCP三次握手 (多图详解)
简单点说是:
详细一点是:
三次握手是TCP建立连接的过程。在此过程中,客户端和服务端之间进行了以下步骤:
四次挥手是TCP断开连接的过程。在此过程中,客户端和服务端之间进行了以下步骤:
在四次挥手过程中,客户端和服务端都需要发送一个FIN报文段和一个ACK报文段,以确认对方的请求和响应。最终,两端都将关闭连接。
应用层是OSI模型中最高层,负责应用程序之间的通信和数据交换。它为应用程序提供了一些协议和服务,使得应用程序可以方便地进行数据传输和通信。
应用层协议有很多,常见的有HTTP、FTP、SMTP、POP3、SSH等。这些协议不仅规定了数据传输的格式和内容,还规定了数据交换的方式和通信流程。
应用层服务包括身份认证、授权、会话管理、数据加密等。这些服务为应用程序提供了安全性和可靠性保障,使得应用程序可以在网络中进行安全的数据传输和通信。
应用层还提供了应用程序接口(API),应用程序可以使用这些API来访问底层网络协议栈,实现数据传输和通信功能。常见的应用程序接口有Socket、Winsock、POSIX等。
总的来说,应用层负责应用程序之间的数据交换和通信,提供了一些协议和服务,使得应用程序可以方便地进行数据传输和通信。
DNS(Domain Name System)是一个分布式的命名系统,它用于将域名转换为IP地址。DNS的主要作用是将人类可读的域名转换为计算机可读的IP地址,以便实现网络通信。
域名结构通常由多个部分组成,每个部分之间用点号(.)分隔。以 www.example.com 为例,其中 “.com” 是顶级域名(TLD,Top-Level Domain),“.example” 是二级域名(SLD,Second-Level Domain),“www” 是主机名(Hostname)。
DNS将域名划分为多个区(Zone),每个区都有一个权威DNS服务器(Authoritative DNS Server)来管理该区域内的域名解析。每个域名只能由一个权威DNS服务器来管理。
一个域通常包含多个子域,每个子域都可以有自己的权威DNS服务器。权威DNS服务器负责管理该子域内的域名解析,并且可以通过DNS委托(DNS Delegation)的方式将该子域的管理权限委托给其他DNS服务器。
区和域的区别在于,区是一个DNS服务器管理的一部分域名空间,而域则是由多个区组成的完整的域名空间。一个域通常由多个区组成,每个区都有一个权威DNS服务器来管理该区域内的域名解析。
域名服务器主要分为以下三种类型:
在DNS查询中,递归查询和迭代查询是两种不同的查询方式。
假设有一个用户要访问 www.example.com 这个网站,
- 首先用户的电脑会向本地 DNS 服务器发出查询请求,本地 DNS 服务器在自己的缓存中查找是否有对应的 IP 地址。如果没有,本地 DNS 服务器就向根域名服务器发出查询请求,根域名服务器返回 com 域的权威 DNS 服务器的地址。
- 本地 DNS 服务器再向 com 域的权威 DNS 服务器发出查询请求,权威 DNS 服务器返回 example.com 域的权威 DNS 服务器的地址。
- 本地 DNS 服务器再向 example.com 域的权威 DNS 服务器发出查询请求,最终得到 www.example.com 的 IP 地址,并把这个 IP 地址返回给用户的电脑
在递归查询的过程中,DNS 服务器会一直向下一级 DNS 服务器发出查询请求,直到查询到目标主机的 IP 地址或者查询失败为止。递归查询过程中,DNS 服务器会自己负责从下一级 DNS 服务器获取所需的信息,并返回给请求的客户端。
迭代查询是指,当DNS客户端向本地DNS服务器发出查询请求时,本地DNS服务器会向根域名服务器发出迭代查询请求,根域名服务器会返回顶级域名服务器的地址,本地DNS服务器再向顶级域名服务器发出迭代查询请求,顶级域名服务器会返回下一级域名服务器的地址,DNS客户端再向下一级域名服务器发出迭代查询请求,直到找到所查询的域名的IP地址。最后,DNS客户端将所查询的域名和其对应的IP地址返回给本地DNS服务器。
假设有一个用户要访问 www.example.com 这个网站,
- 首先用户的电脑会向本地 DNS 服务器发出查询请求,本地 DNS 服务器在自己的缓存中查找是否有对应的 IP 地址。如果没有,本地 DNS 服务器就向根域名服务器发出查询请求。
- 根域名服务器返回 com 域的权威 DNS 服务器的地址,本地 DNS 服务器再向 com 域的权威 DNS 服务器发出查询请求。 如果 com 域的权威 DNS 服务器无法回答该请求,它会返回一个指向 example.com 域的权威 DNS 服务器的地址给本地 DNS服务器,让本地 DNS 服务器向 example.com 域的权威 DNS 服务器发出查询请求。
- 如果 example.com 域的权威 DNS 服务器也无法回答该请求,它会返回一个指向 www.example.com 的权威 DNS
服务器的地址给本地 DNS 服务器,让本地 DNS 服务器向 www.example.com 域的权威 DNS
服务器发出查询请求,最终得到 www.example.com 的 IP 地址,并把这个 IP 地址返回给用户的电脑。在迭代查询的过程中,DNS 服务器不会递归地向下一级 DNS 服务器发出查询请求,而是直接返回一个指向下一级 DNS 服务器的地址,让客户端自行向下一级 DNS 服务器发出查询请求。客户端需要自己处理 DNS 服务器返回的地址,然后向下一级 DNS 服务器发出查询请求。
总的来说,递归查询是由DNS服务器代表DNS客户端向其他DNS服务器查询,直到找到所查询的域名的IP地址,而迭代查询是由DNS客户端自己向DNS服务器查询,直到找到所查询的域名的IP地址。
FTP、TFTP、NFS和TELNET是常用的网络协议,具体介绍如下:
HTTP(Hypertext Transfer Protocol)是一种用于传输超媒体文档(例如 HTML)的协议。它是基于请求-响应模式工作的,其中客户端发送请求,服务器返回响应。
HTTP报文是在HTTP协议中传输的数据,它由两部分组成:请求报文和响应报文。请求报文由客户端发送到服务器,请求服务器处理某个操作,例如获取一个资源或提交表单。响应报文由服务器发送回客户端,包含请求的结果或出现的错误。
HTTP报文由两部分组成:报文头和报文体。报文头包含请求或响应的元数据,例如请求方法、状态码、日期和时间、报文主体长度等。报文体是请求或响应的实际数据内容。
HTTP协议有多个版本,常见的有HTTP/1.0、HTTP/1.1和HTTP/2。HTTP/1.1是目前使用最广泛的版本,它支持持久连接和流水线化,这使得客户端可以发送多个请求并在单个连接上接收多个响应。
HTTP协议使用TCP协议作为其传输层协议,因此它是一种可靠的协议,可以确保数据的可靠传输。HTTP协议也支持加密传输,可以使用HTTPS协议来保护数据的隐私和完整性。
总的来说,HTTP协议是互联网上最重要的协议之一,它支持各种不同的应用程序,包括Web浏览器、Web服务、API等。理解HTTP协议是进行Web开发和网络通信的基础。
下面是一个HTTP请求报文的例子:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
上面的报文是一个GET请求,请求的资源路径是/index.html,使用的协议版本是HTTP/1.1。除此之外,还包含了一些请求头信息,比如Host表示请求的目标主机,User-Agent表示客户端的浏览器类型,Accept表示客户端能够接受的响应类型等。
下面是一个HTTP响应报文的例子:
HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 Content-Length: 1234 Date: Mon, 01 Jan 2000 00:00:00 GMT Server: Apache/2.4.29 (Unix) Last-Modified: Sun, 31 Dec 1999 23:59:59 GMT ETag: "1234567890abcdef" Accept-Ranges: bytes Connection: close <!DOCTYPE html> <html> <head> <title>Example</title> </head> <body> <h1>Welcome to Example</h1> <p>This is an example HTML page.</p> </body> </html>
上面的报文是一个200 OK的响应,表示请求成功。响应头包含了一些元数据,比如Content-Type表示响应内容的类型,Content-Length表示响应内容的长度,Date表示响应时间等。响应头和响应体之间用一个空行分隔开,空行之后是响应的具体内容,这里是一个简单的HTML页面。
当用户在浏览器中输入网址"http://acm.sdtbu.edu.cn"并回车时,主要流程如下:
整个过程涉及到DNS解析、TCP连接、HTTP请求和响应、页面解析和渲染等多个步骤,其中每一步都需要一定的时间和资源开销,影响页面的加载速度和用户体验。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。