C++学习重点记录(Week4 & Week5)
作者:互联网
中间参加了次婚礼,再加上一些杂七杂八的杂事,中间断更了一周,这两个星期把计网从头到尾过了一遍,主要是基础的理解和协议/模型的记忆。
一、计网中的基础概念:
①计算机网络概念:计算机网络是通过通信设备和线路将一个个分散的、具有独立功能的计算机系统连接起来,由功能完善的软件实现资源共享和信息传递的系统。
②计算机网络功能:数据通信、资源共享、分布式处理(多台计算机各自承担统一工作任务的不同部分)、提高可靠性,负载均衡。
③功能组成主要可分为通信子网和资源子网,在OSI七层模型中,传输层下面三层是通信子网,由各种传输介质、通信设备、响应的网络协议组成;上面三层是资源子网,是实现资源共享功能的设备和软件的集合。
④为了方便通信,需要对计算机网络进行标准化工作,其中法定标准是OSI七层模型,根据市场得到的事实标准TCP/IP模型。
⑤三个重要性能指标:
·速率:即网速,1Byte=8bit,即比特率;
·带宽:单位时间内允许通过的最高数据量;
·吞吐量:单位时间内实际的数据率。
⑥计算机网络分层是因为在数据传输过程中包括数据处理、连接建立、传输数据等多道工序,分层之后让每一层只实现一种相对独立的功能,确保整体工作的顺利实现。
⑦协议是对等实体数据交换的规则、标准或约定,即网络协议。
⑧接口是上层使用下层服务的入口,只有相邻层才可以使用接口。
二、OSI参考模型
①分层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
②前三层是点到点的通信,只关注下一步把数据传到哪,不关注目的端口;后四层是端到端的通信,不关注中间过程,面向对象。
③传输过程:从应用层往下,每一层都对数据报文段进行处理,到了物理层以电信号的形式传出去,传到目的主机物理层,再一层层往上拆包,为了保证打包和拆包时数据的一致性,采用共同的协议实现。
④各层功能及常见协议
·应用层:所有能和用户交互产生网络流量的程序;
典型服务:文件传输(FTP),电子邮件(SMTP)、万维网(HTTP)。
·表示层:用于处理在两个通信系统中交换信息的表示方式
功能:数据格式变换、数据解密加密、数据压缩解压缩。
·会话层:像表示层进程提供连接,并在连接上有序地传输数据,即会话。
功能:建立、管理、终止会话;使用校验点可使会话在通信失效时从校验点重新恢复通信,实现数据同步。
·传输层:负责主机中两个进程之间的通信,即端到端的通信,传输单位是报文段或用户数据报。
功能:可靠传输、不可靠传输;差错控制;流量控制;复用分用。
常用协议:TCP、UDP
·网络层:把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。
功能:路由选择;流量控制;差错控制;拥塞控制。
常用协议:IP、IPX、ICMP。
·数据链路层:把网络层传下来的数据报组装成帧,传输单位是帧。
功能:成帧;差错控制;流量控制;访问控制。
常用协议:SDLC、HDLC、PPP、STP
·物理层:在物理媒体上实现比特流的透明传输,传输单位是比特。(给什么发什么,也叫傻瓜层)。
⑤TCP/IP模型和OSI模型的不同点:
·OSI定义三点:服务、协议、接口;
·OSI先出现,参考模型先于协议发明,不偏向特定协议;
·TCP/IP设计初就考虑到异构网互联问题,将IP作为重要层次;
·OSI网络层是无连接+面向连接,而TCP/IP更看重IP,因此网络层是无连接;
·OSI传输层是无连接,而TCP/IP是无连接+面向连接。
三、物理层
①数据通信模型:
②术语:
·码元:用一个固定时长的信号波形,代表不同离散值的基本波形,是数字信号的基本单位。
·速率:单位时间内码元传输速率,单位是波特。
·带宽:最高数据率。
③通信方式:
·单工:只允许一端向另一端发送数据;
·半双工:两端可以互相传输,但不能同时传输;
·全双工:两端可以同时互相传输。
④数据传输方式:
串行传输:只有一个信道;
并行传输:有很多信道。
四、数据链路层
①功能概述:在物理层提供服务的基础上向网络层提供服务。最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层,其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
②功能:
·为网络层提供服务,分为无确认无连接服务,有确认无连接服务,有确认有链接服务;
·链路管理,即连接的建立、维持、释放;
·组帧:发送端在一端数据的前后部分添加首部和尾部;
·流量控制;
·差错控制。
③组装成帧:
④差错控制:
·传输中的差错都是由于噪声引起的,分为位错和帧错,位错即比特位出错,帧错包括丢帧,重复和帧时许。
·链路层的差错控制意义在于,在传输一开始就通过检错丢弃掉错误的帧,防止错误的帧一直传输,传输到目的主机处再被检测出来丢弃,就会浪费资源。
·比特错可以通过差错控制来控制,包括检错编码和纠错编码。
⑤流量控制:
·概述:较高的发送速度和较低的接受能力的不匹配,也就是让发送方发慢点。
·滑动窗口可以实现可靠传输和流量控制。
·滑动窗口:在一个范围内,一直发送这个窗口内的数据,不用像之前那样等到回复再发送下一个。如果接到窗口left的ACK,就往右移,如果没接到,就一直发送,发送到窗口的right为止。
·停止-等待协议:发送完一个分组就停止发送,等待对方确认。
·后退N帧协议:接收方如果正确收到n号帧,就发送一个ACK,其他情况下都丢弃帧。
·选择重传协议:接收方来者不拒,后面失序的先缓存,等前面的ACK了再提取缓存。
五、网络层
·功能概述:把分组从源端传到目的端,为分组交换网上的不同主机提供服务。
·功能:路由选择与分组转发(选择最佳路径);异构网络互联;拥塞控制。
·数据交换分为三种:电路交换、报文交换和分组交换。其中,电路交换需要在两台主机之间先建立连接,然后再传输;报文交换和分组交换可以直接传输,但在交换设备处需要存储转发,也对应得需要存储转发时延。
·数据交换设备即路由器,是由路由表来决定其信息的,包括目的主机,子网掩码,下一传输地址以及端口。
·IPV4和IPV6是IP数据报首部的协议版本。
·当IP数据报过大时,可以分片,在数据报头部有“标识”一栏,同一数据报的分片使用同一标识;后面的标志位决定此数据愿不愿意分片;再后面是片位移,代表这个分片是从数据报哪个地址开始的。
·IP地址:全世界唯一的32位/4字节标识符,标识路由器/主机的接口,一台主机可以有多个接口,分为网络号和主机号,用来确定属于哪个网络和哪个主机。
·子网划分:本单位划分子网后,对外仍表现为一个网络,外部网络看不到本单位子网的划分,即两级IP地址。
·两级IP地址的子网掩码:255.255.0.0,三级IP地址的子网掩码:255.255.255.0,因为子网掩码的网络号都是1,即255;主机号都是0。
·子网掩码和IP地址逐位相与,即可得到子网网络地址。
·路由器是一个有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。路由器转发分组:先提取目的IP地址,如果有对应端口,就直接交付,否则交给下一个路由器。
·无分类编址CIDR:只用两级IP地址,分为网络前缀和主机号,网络前缀变长,由最后的一个数字确定,例如192.198.5.0/24,就说明前24位是网络号,后8位是主机号,这种情况下说明这个CIDR能容纳的最大主机数是2的8次方。
六、传输层
①功能:
·提供进程与进程之间的逻辑通信;
·使用网络层的服务,为应用层提供服务;
·对收到的报文进行差错的检测。
②TCP和UDP:
·TCP传送数据之前必须建立连接,数据传送结束后要释放连接,因此适用于可靠,时延大的大文件传输;
·UDP不可靠,无连接,时延小,适用于传送小文件。
·套接字=主机IP地址+端口号。
③UDP:
·特点:
UDP是无连接的,减少开销和发送数据之前的时延;
UDP使用最大努力交付,即不保证可靠交付;
UDP是面向报文的,适合一次性传输少量数据的网络应用;
UDP无拥塞控制,适合很多实时应用。
④TCP:
·特点:
TCP是面向连接的传输层协议;
每一条TCP连接只能有两个端点,是点对点的;
可靠有序,不重不丢;
全双工通信。
·TCP报文首部包括源端口、目的端口、序号和确认号。
·TCP首部还包括6个控制位:
URG:URG=1时,代表这个报文段中有紧急数据,需要高优先发送;
ACK:ACK=1时确认号有效,在连接建立后传送的所有数据ACK都要为1;
PSH:PSH=1时,接收方需要把此报文段从缓存中拿出来交付给应用层;
RST: RST=1时,标明TCP连接出现差错,需要断开重连;
SYN:SYN=1时,表明是一个连接请求/连接接受报文;
FIN:FIN=1时,表明此报文段发送方数据已发完,要求释放连接。
⑤TCP连接管理:
建立连接(三次握手):
第一次:客户端发送SYN=1(表明这是一个请求连接报文,不包含应用层数据),seq=x(随机生成一个数据包发送过去);
第二次:服务器端回复SYN=1,ACK=1(表明确认连接),seq=y(随机),ack=x+1(表明下一个想要收到的字节);
第三次:客户端SYN=0,发送ACK=1,seq=x+1(回复第二次的ack),ack=y+1(表明下一个想要收到的字节)。
释放连接(四次挥手):
第一次:客户端发送FIN=1(请求释放控制位),seq=u(报文段序号);
第二次:服务器发送ACK=1, seq=v,ack=u+1,这步发送的是确认报文段;
第三次:服务器发送FIN=1,ACK=1,seq=w,ack=u+1,这步发送的是释放连接报文段;
第四次:客户端发送ACK=1,seq=u+1,ack=w+1,确认报文段。
在释放连接过程中,客户机在第一次后进入FIN-WAIT1状态,收到第二次的确认报文后进入FIN-WAIT2状态,收到第三次的释放连接报文后发送第四次,然后进入TIME-WAIT,TIME-WAIT结束后,关闭连接。
服务器在第二次发送后进入CLOSE-WAIT(半关闭)状态,在第三次发送后进入等待,等到第四次的确认报文段后再关闭连接。
⑥TCP可靠传输:
可靠:保证接收方从缓存区读出的字节流和发送方发送的字节流是完全相同的。
实现机制:
·校验:增加伪首部;
·序号:TCP的报文段每个都有自己的序号;
·确认:表明自己收到了,并且给出自己想要的下一个报文段;
·重传:如果发送方在规定的时间内没有收到确认报文段,就重传。
·TCP流量控制:让发送方慢点,让接收方来得及接收。
TCP利用滑动窗口实现流量控制。
⑦TCP拥塞控制:
出现拥塞的条件:对资源需求的总和>可用资源,导致网络堵塞。
拥塞窗口:发送方根据当前网络状况,设置的窗口大小。
拥塞控制四种算法:
慢开始:最开始窗口大小为1,经历一个传输轮次后指数规律增长,到了阙值后,进入拥塞避免;
拥塞避免:加法增长,出现网络拥塞后,再把窗口大小变为1,执行新的慢开始,阙值改变。
快重传:收到三个重复的确认,就立刻重传。
快恢复:出现网络拥塞后不把窗口重置为1,而是直接调整到新的阙值开始加法增长。
七、应用层:
·概述:对应用程序的通信提供服务;
·功能:文件的传输、访问和管理;电子邮件;虚拟终端;查询服务和远程作业登录。
·重要协议:FTP、SMTP、POP3、HTTP、DNS。
·网络应用模型:客户/服务器(C/S)模型,P2P模型。
C/S:有一个永远提供服务的服务器,主机可以请求服务,但主机间不能直接通信。
P2P:每个主机即可以提供服务,也可以请求服务;任意节点间都可以直接通信。
·DNS系统(域名服务器):把域名转换成IP地址供主机访问的系统。
域名解析过程:
递归查询:DFS,由主机到本地域名服务器->根域名服务器->顶级域名服务器->权限域名服务器;
迭代查询:BFS,本地域名服务器同时向根域名武器,顶级域名服务器,权限域名服务器寻求IP地址。
·文件传送协议FTP:提供不同种类主机系统之间的文件传输能力。
FTP是基于C/S的协议,用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。依照FTP协议,进行文件传送的计算机就是FTP服务器;连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。
FTP工作原理:
分为控制进程和数据传送进程,控制进程一直存在,而数据传送进程只在数据传输的时候存在,传输结束即关闭。
FTP传输模式:
文本模式:ASCII模式,以文本序列传输数据;
二进制模式:Binary模式,以二进制序列传输数据。
·电子邮件系统概述
过程:用户代理把邮件发送给发送方邮件服务器,发送方邮件服务器把邮件发送给接收方邮件服务器,其中都是采用TCP连接,使用SMTP协议。接收方邮件服务器接收后,把邮件发送给接收方,这过程中采用的是POP3或者IMAP协议。
SMTP缺点:
SMTP不能传送可执行文件和非二进制文件;
SMTP只能传送7位ASCII码,不能传输非英语的文字。
·万维网
概述:是一个大规模的、联机式的信息存储所,是无数个网络站点和网页的集合。
URL是统一资源定位符,可以唯一标识资源。用户通过点击超链接获取资源,这些资源通过超文本传输协议即HTTP传送给使用者。
HTTP:定义了浏览器如何向万维网服务器请求万维网文档,以及服务器如何把文档传送给浏览器。
HTTP协议特点:是无状态的,没有记忆的。但一些网站希望有记忆,因此使用了Cookie,Cookie是存储在主机上的文本文件,记录一段时间内用户的访问记录,来提供个性化服务。
HTTP采用TCP作为传输层协议,但HTTP协议本身是无连接的。
HTTP协议的连接方式分为非持久连接和持久连接。非持久连接即传输完文件就释放连接,而持久连接是传输结束后保留一段时间的连接,方便后续传输。
总结的有点乱,用自己语言总结的,如果有觉得混乱的就参考一下这个笔记,比较全。
https://blog.csdn.net/weixin_43914604/article/details/104722679
标签:主机,报文,TCP,连接,发送,传输,C++,Week5,Week4 来源: https://blog.csdn.net/qq_43144021/article/details/118310366