计算机网络基础概念
计算机网络的功能:数据通信、资源共享、分布式处理、提高可靠性、负载均衡
组成部分:硬件、软件和协议
工作方式:边缘部分(C/S、P2P)——用户直接使用;核心部分——为边缘部分提供服务
功能组成:通信子网——数据通信;资源子网——资源共享
分类:
范围:广域网(交换)、城域网、局域网(广播)、个人区域网
使用者:公用、专用
交换技术:电路交换、报文交换、分组交换
拓扑:总线型、星型、环形、网状
传输技术:广播式、点对点(分组存储转发和路由选择)
标准化工作及其组织
法定标准——OSI
事实标准——TCP/IP
RFC请求评论:
- 因特网草案
- 建议标准
- 草案标准
- 因特网标准
性能指标
速率:数据率或数据传输率或比特率
带宽:单位时间内从网络中到某一点所能通过的最高数据率
吞吐量:单位时间内通过某个网络的数据量(类似流量)
时延:数据从网络一端传送到另一端所需的时间
时延带宽积=传播时延×带宽,以比特为单位的链路长度
往返时延:从发送方发送数据开始,到发送方接收到接收方确认总共经理的时延(越大,可以发送的数据越多),包括:往返传播时延(2倍传播时延)、末端处理时间
利用率:信道利用率、网络利用率
分层结构
实体、协议(语法、语义、同步,式水平的)、接口、服务(垂直)
ISO/OSI参考模型
数据封装:
PDU:协议数据单元
应用层:文件传输FTP、电子邮件SMTP、万维网HTTP
表示层:
1. 数据格式变换
2. 数据加密解密
3. 数据压缩与恢复
会话层:向表示层/用户进程提供建立连接并在连接上有序传递数据
- 建立、管理、终止会话
- 使用校验点可使会话在通信失效时从校验点/同步点继续恢复通信实现同步
传输层:(TCP\UDP)两个进程的通信,即端到端的通信。传输单位是报文段或用户数据段
- 可靠传输、不可靠传输
- 差错控制
- 流量控制
- 复用分用
网络层:把分组从源端传到目的端,为分组交换网上不同主机提供通信服务,数据报
- 路由选择
- 流量控制
- 差错控制
- 拥塞控制
数据链路层:把网络层传下来的数据报组装城帧
- 成帧
- 差错控制
- 流量控制
物理层:
TCP/IP模型
5层体系结构
封装与解封
两个公式——重点
物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体
主要任务:确定与传输媒体接口有关的一些特性——定义标准
特性:机械、电气(二进制)、功能、规程
数据通信——传输消息
基本方式:单工通信、半双工通信、全双工通信
数据传输:串行传输、并行传输
奈氏准者、香浓定理
失真:
网络IP地址
IP分类
特殊IP
私有地址
联系
子网划分
子网掩码
1. 传输层
1.1 传输层的功能
1.2 传输层的寻址与端口
1.3 无连接服务与面向连接服务
- 面向连接服务(TCP):通信双方在通信之前,必须先建立连接(三次握手),在通信过程中,整个连接的情况一直被实施地监控和管理。通信结束后,应该释放这个连接(四次挥手)。双工可靠逻辑信道。增加许多占用处理机资源地开销:确认、流量控制、计时器、连接管理等——使得协议数据单元头部增大,适用于文件传输(FTP)、超文本传输协议(HTTP)、远程登陆(TELNET)。
- 无连接服务(UDP):实体之间的通信不需要事先建立好连接,需要通信时,直接将消息发送到“网络”中,让该信息地传递在网络上尽力而为地往目的地传送。不可靠逻辑信道。简单,实时性好,适用于小文件传输(TFTP)、DNS、SNMP、实时传输协议(RTP)。
信息都对路由不可见。
2. UDP协议
无连接用户数据报协议,仅在IP数据服务之上增加了两个基本服务:复用/分用和差错检验。
- 适用于一次性传输较少数据的网络应用(QQ表情、视频通话);
- 维护传输可靠性需要在应用层完成。
- 发送方对应用层交付下来的报文添加首部后就交付给IP层,既不合并,也不拆分,保留报文的边界;接收方在接收IP层的UDP用户数据报,去除首部后直接交付给应用进程——报文不可分割,是UDP数据处理的最小单位。
2.1 UDP报文格式
2.2 UDP校验
在UDP数据报之前增加12B的伪首部,在计算校验时临时添加,校验和就按照这个临时的UDP数据包计算。伪首部既不向上传送也不向下递交,仅为了校验和。
二进制反码运算求和再取反(还要校验数据部分):
3. TCP协议
在不可靠IP层实现可靠传输——解决传输的可靠、有序、无丢失、不重复。
3.1 TCP报文格式
数据传送单元:报文段——TCP首部、TCP数据,整个报文段作为IP数据报的数据部分封装在IP数据报中。首部20B 是固定的。
3.2 TCP连接管理(三次握手)
TCP把连接作为最基本的抽象,每条TCP连接有两个端点,TCP连接的端点不是主机、IP地址、应用进程、传输层的协议端口,TCP连接的端口成为套接字或插口。
TCP连接的建立应采用客户机/服务器方式,主动发起连接的应用进程称为客户机,被动等待连接建立的应用进程称为服务器。
第一步:请求报文段:SYN=1,ACK=0,seq=x。
客户机的TCP首先向服务器的TCP发送一个请求报文段。不含应用层数据,SYN=1。客户机随机选择一个起始序列号(连接请求报文段不携带数据,但消耗一个序号段)。
第二步:服务器确认报文段:SYN=1,ACK=1,seq=y,ack=x+1(确认号字段)
服务器的TCP收到连接请求报文段后,如果同意连接,就像客户机发回确认,并为该TCP连接分配TCP缓存和变量。在确认报文段中,SYN和ACK位都被置为1。(确认报文段不携带数据,但消耗一个序号段)
第三步:客户端确认报文段:SYN=1,ACK=1,seq=x+1,ack=y+1(确认号字段)。
当客户端收到确认报文段之后,还要向服务器给出确认,并且也要给该连接分配缓存和变量。(可以携带数据,若不携带则不消耗序号)
成功进行以上三步,就建立了TCP连接。接下来就可以传输应用层数据,TCP提供的时双工通信,因此通信双方的应用进程任意时刻都能收发数据。服务器资源是在第二次握手分配,客户端资源在第三次握手分配。
3.3 TCP连接的释放(四次挥手)
第一步:客户机释放连接报文段:FIN=1,seq=u(u等于前面已经传送过去的数据最后一个字节序号+1)
客户机打算关闭连接,向其TCP发送一个连接释放报文段,并停止发送数据,主动关闭TCP连接。发送FIN报文时,发送FIN的一端不能再发送数据,即关闭了双工中的一条数据通路,但是对方还可以发送数据。
第二步:服务器确认报文:ack=u+1
服务器自己的序号是v,等于已经传过的数据的最后一个字节的序号+1。服务器收到连接释放报文后发出确认,即从客户端到服务器指个方向的连接释放。TCP处于半关闭状态,若服务器继续发送数据,客户端仍要接收。
第三步:服务器释放报文段:FIN=1。
若服务器已经没有要向客户机发送的数据,就通知TCP释放此链接,此时其发处FIN=1的连接释放报文段。
第四步:客户机确认报文:ACK=1,ack=w+1,seq=u+1。
客户机收到连接释放报文段,必须发出确认。TCP连接还未释放,必须经过时间等待计时器设置的时间2MSL后,A才进入连接关闭状态。
4. 总结
4.1 洪泛攻击
5. TCP可靠传输
保证接收方进程从缓存区中读取的字节流与发送方发出的字节流完全一样,使用校验、序号、确认、重传等机制。
1. 序号
首部序号字段用于保证数据能有序地提交给应用层,TCP把数据视为一个无结构但有序地字节流,序号建立在传送的字节流上,而不建立在报文段上。序号字段的值就是指本报文段所发送的数据的第一个字节的编号。
2. 确认
TCP首部确认号是期望收到对方的下一个报文的数据的第一个字节的序号。发送缓冲区会继续存储那些以发送但未收到确认的报文段,以便在需要时重传。使用累积确认,即TCP只确认数据流中至第一个丢失字节为止的字节。如:B收到了A发送的0~2及6~7报文段,由于某种原因,B还未收到3~5,此时B仍在等待字节3(和其后面的字节),B到A的下一个报文段将确认号置为3。
3. 重传
两种事件:超时、冗余ACK
超时:在规定时间内没受到接收方的确认就需要重传——超时重传TCP每发送一个报文段,就对这个报文段设置一次计时器。计时器设置的重传时间到期但还未收到确认是,就要重传这个报文段。
冗余ACK:超时重传的超时周期太长。在超时发生之前,通过注意冗余ACK来检测丢包的情况。冗余:再次确认某个报文段的ACK,而发送方先前已经受到过该报文的确认。每当比期望到达序列号大的失序报文到达时,及发送一个冗余ACK,指明下一个期望收到的报文。
5.1 TCP流量控制——滑动窗口
消除发送方使接收方缓存溢出的可能性——速度匹配服务。利用滑动窗口机制实现流量控制,大小可动态变化
主机A向主机B发送数据,B说:我的rwnd=400字节
5.2 TCP拥塞控制
防止过多的数据注入网络,保证网络中的路由或链路不致过载。与流量控制相似,都通过控制发送方发送数据的速率来达到控制效果。
区别:
- 拥塞控制——让网络能够承受现有的网络负荷,是一个全局性的过程,涉及所有主机、所有路由器、以及与降低网络传输性能有关的所有因素。
- 流量控制——抑制发送端发送数据的速率,以便接收方来得及接收。点对点的通信量控制,即接收端和发送端。
慢开始和拥塞避免:接收窗口的大小可根据TCP报文首部的窗口字段通知发送方,但是发送方如何维护?
快重传和快恢复:对慢开始和拥塞避免算法的改进
流量控制:发送方的数据量由就受访定
拥塞控制:发送方自己通过检测网络状况决定
超时:慢开始和拥塞避免
冗余:快重传快恢复
发送方窗口的实际大小由流量控制和拥塞控制共同决定,且取rwnd接收窗口和cwnd拥塞窗口中较小的。