网络课笔记整理——传输层概述、UDP与DNS

一、传输层的功能及服务

二、多路复用与并发操作

三、传输层协议

四、UDP协议

五、DNS系统同:从应用层穿越整个协议栈

一、传输层的功能与服务

1、网络层VS传输层VS应用层
  1. 网络层:分组交换,数据报方式存在不可靠(丢失,乱序,延迟(主要是因为路由器表可能是不断变化的))
  2. 传输层:为应用层提供链接或无连接的服务,差错及流量控制
  3. 应用层:各类业务,或要求保证可靠性或实时性
2、传输层的功能与服务
  1. 寻址:定位应用进程
  2. 复用:在一个主机上支持多个任务
  3. 连接建立与释放:提供面向连接的服务
  4. 差错控制与流量控制
  5. 拥塞控制:辅助网络层解决拥塞问题
  6. 崩溃恢复
流量控制与拥塞控制之间的区别:
  • 流量控制:流量控制是端到端的控制,解决的是发送方和接收方速率不匹配的问题,发送方发送得太快导致接收方来不及处理。 其一般通过链路层上的滑动窗口进行解决。
  • 拥戴是因网络过载导致性能严重下降,拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不至于过载。 拥塞控制是一个全局性的过程,涉及到所有的主机、路由器、与降低网络性能有关的所有的因素
互联网中拥塞控制算法:
  1. 主要是网络层进行解决,包括发送抑制报文,逐跳后压,随机早期检测(RED)
  2. 传输层中的拥塞控制只是辅助,并且是面向连接的时候才有拥塞控制,例如TCP中的显示拥塞通知
a、寻址: 每个主机仅有一个NSAP,需要标识TSAP;不同的TSAP的端口不同,应用程序接收不同端口上的消息。换句话说就是每个主机都 只有一个IP地址,但是会有很多的应用,那么区分这样应用就是通过IP地址+端口号。
b、多路复用:
  1. 复用:主机只有一个地址但是有多个应用,这些应用都使用一个地址
  2. 反向复用:如果主机由多条网络路径,而一个应用需求高于其中任意路径,则可以轮询多条路径.例如多个用户访问一个网站, 一个应用使用一个带宽不够

二、多路复用与并发操作:服务器如何为多个用户提供服务

  1. 方案一
    • 服务器在固定的端口上监听,不同端口提供不同的服务
    • 所以不管有没有用户的请求,服务器都会在个端口上等待连接请求
    • 存在的问题是资源的浪费,即使没有相应的请求也一直监听
  2. 方案二
    • 端口映射;用户与端口映射器建立连接,发送消息指定其所需要的服务器名,得到服务器相应的TSAP;然后再与 服务器建立连接;类似于查号台
    • 当有请求的时候,服务器才启动新的服务进程,而服务器继续监听,按需常见服务,节省服务器资源

三、传输层协议

1、传输层向上提供可靠和不可靠逻辑信道:
  • 使用TCP协议:全双工可靠信道
  • 使用UDP协议:不可靠信道
从协议的角度看,我们将网络理解为对等层之间的直接的通信, 那么传输层在这一意义上与链路层相似,类似端到端的通信,但是两者之间有区别:
  • 传输层提供的是字节流的通道,差错、流量控制等都是基于字节流的
  • 链路层提供的是数据报的通道,差错、流量控制是基于数据报的
2、UDP与TCP
  1. UDP在传送数据之前不需要建立连接。传输层在受到UDP报文后,也不发送确认
  2. TCP提供面向连接的可靠的服务。TCP服务增加了很多的开销,如协议的首部更长,采用拥塞窗口控制,超时重传机制等,算法更复杂
3、端口在进程间通信的作用:标志进程,因为一个主机只有一个IP地址,但是它可能要支持多个应用或者服务, 所以要区分不同的应用服务就要通过端口号区分
  1. 端口号占16比特
  2. 两类端口:一类是熟知端口号,其数值一般为0~1023;另一类是一般端口号,用来随机分配给请求通信的进程
3、套接字(Socket)
  • IP地址与端口组成socket或套接字,网络编程的时候使用。
  • socket=(IP地址:端口号)
  • TCP协议是面向连接的,所以一个TCP链接唯一被一对套接字确定,TCP连接::={socket1,socket2}={(IP1::port1),(IP2,port2)}
  • 进程通过套接字接入网络
4、socket网络编程服务器端与客户端之间的区别:
  1. 服务器端:
    • 创建一个socket
    • 绑定IP地址和端口信息
    • 设置允许的最大的连接数(因为一个服务器可能同时为多个用户提供服务)
    • 接收客户端上来的连接
    • 收发数据
    • 关闭网络
  2. 客户端:
    • 创建socket
    • 设置要连接的对方的ip地址和端口号
    • 连接服务器
    • 收发数据
    • 关闭网络连接
  3. 总之面向连接的服务,一般都是创建连接,进行通信,通信结束之后关闭连接
  4. 网络编程的时候的socket就是一对地址
5、用套接字实现进程间通信
  1. 无连接服务:
    • 基本就是按照以上的网络的socket的编程的步骤进行
    • 特殊点是无连接的服务一个服务器可以同时对多个客户进行服务
    • 其没有连接的过程
  2. 面向连接的服务:
    • 服务器创建套接字之后,进行绑定,然后进行监听
    • 客户端创建套接字之后,进行连接,服务端监听到并且接受之后,双方开始通信
    • 通信开始,由于是面向连接的服务,所以服务器端只能与一个进程进行通信,此时其需要fork一个子进程
    • 该子进程关闭listen,负责与客户端进行数据传输

四、用户数据报协议UDP

1、UDP
  • UDP在IP数据报上增加端口和差错检测功能,没有流量控制、拥塞控制和重传机制
  • UDP值提供不可靠的交付,有点是:
    • 不需要建立连接,简单、易于实现
    • 头部开销少,只有8个字节的首部开销
    • 网络拥塞时也不降低发送速率,适于传输实时业务,短时突发数据
  • 基于UDP的应用:DNS、TFTP(简单文本传输协议),RIP(路由信息协议),DHCP(动态主机配置协议), SNMP(简单网络管理协议),NFS(网络文件系统),RTP(实时传输协议),IGMP(互联网组管理协议)
2、UDP用户数据报格式
  • 检验和:在计算检验和时,临时把“伪首部”和UDP用户数据报连接在一起,伪首部仅仅是为了计算检验和
  • UDP数据报包括首部和数据部分,其中首部为8字节,包括2字节的源端口,2字节的目的端口,2字节的长度,2字节的检验和
  • 而伪首部是为了计算检验和,是12字节,包括4字节的IP源地址,4字节的IP目的地址,1字节为0,1字节为17(为UDP的类型), 2字节的UDP长度
  • 网络层加上IP首部就构成了IP数据报

五、DNS系统

1、使用DNS系统的原因
  • IP地址不容易记
  • 域名便于理解并记忆
  • 当更换一个服务器的时候,其IP地址可能需要改变(如因位置的改变),但域名不变,方便用户使用
  • 可以为服务器及主机定义别名:一个主机由多个名字,虽然只有一个IP地址
  • 负载分配:多个服务器共用一个域名,也就是多个IP地址可以使用同一个域名,只要解析的过程中进行相应的设置就可以了。 这通常是针对该服务器的任务量很大的情况,例如各大门户网站,搜索引擎网站
2、DNS系统
  • DNS域名系统
  • 域名是主机的别名,采用层次的结构
  • 域名服务器负责域名到IP地址的解析,域名服务器采用分布式结构,由若干个域名服务器负责名字解析
3、互联网的域名空间:根=》顶级域名=》二级域名=》三级域名=》四级域名,在域名中写在最前面的是四级域名。
顶级域名TLD包括国家顶级域名和通用顶级域名。 4、DNS如何工作
  • DNS采用分布式结构是因为集中式存在如下的问题:
    1. 单点失效问题:指的是整个系统的工作因为一个单点(服务器)的失败而停止了所有的工作
    2. 性能可扩展性,大量请求使DNS服务器成为瓶颈
    3. 服务器与客户机距离远,引入延迟较大
    4. 单个数据库的容量巨大,平凡更新不便于管理
  • DNS采用分布式层状结构,DNS分类:
    • ROOT DNS跟服务器
    • TOP_LEVEL DNS顶层服务器
    • AUTHORITATIVE授权服务器
    • 本地服务器
    • 为了提供更好的可扩展性,数量巨大的DNS服务器组成了遍布全球的一个树形结构。一个DNS服务器并没有包含所有的域名到IP地址的映射。全球总共有13个 根域名服务器,下设TLD服务器,在根域名服务器中有顶级域名服务器的IP地址,这样就可以根据顶级域名找到相应的TLD服务器进而进行解析域名
  • 各级服务器的功能:
    1. 顶级域名服务器(TLD):负责顶级域名及国家域名的解析,当收到DNS查询请求的时候,就给出相应的回答
    2. 权限域名服务器:负责一个去的域名服务器,保存DNS记录。当一个权限DNS不能给出最后的查询回答时,就会响应下一步应当查询的权限DNS
    3. 本地域名服务器:当一个主机发出DNS查询请求时,首先发送给本地的DNS;每个ISP都会有一个本地DNS,称为缺省的DNS;实质上就是一个代理, 负责转发查询请求给分布的DNS
  • DNS的具体的工作流程:
    1. 根域名服务器:知道所有的顶级域名服务器及IP地址
    2. 互联网上共有13个根域名服务器
    3. 本地DNS在对域名进行解析若无法解析,就首选求助于根域名服务器(所以虽然域名包括的是从顶级域名开始的,正常是从顶级域名服务器开始,但是如果本地无法解析, 那么也就是不知道顶级域名服务器的IP地址,那么就求助于根域名服务器,因为根域名服务器保存了顶级域名服务器的IP地址)
    4. 根域名服务器并不直接把域名转换为IP地址,而是在使用迭代查时,把下一步要找的顶级域名服务器的IP地址告诉本地DNS
  • DNS解析的过程:
    • 主机向本地DNS的查询一般是递归查询。如果本地DNS无法解析域名,则以DNS客户的身份,向其ROOT DNS继续发出查询请求报文. 递归查询:本地DNS代替主机处理域名解析工作,直到返回完整的答案
    • 本地DNS向根DNS的查询通常是迭代查询。当根DNS收到本地DNS的迭代查询请求报文时,给出IP地址或“下一步要查询的域名服务器” 迭代查询:根DNS的查询只是反馈部分答案并移动到下一次查询过程,而由本地DNS继续发起下一次请求
  • 提供DNS的可靠性:
    • 设置主域名服务器、辅助域名服务器
    • 当主域名服务器出故障时,辅助域名服务器可以保证DNS的查询工作不会中断
    • 主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只在主域名服务器中进行,这样就保证了数据的一致性
5、DNS解析存在的问题: 域名解析:增加了延迟及网络流量。怎样解决:本地的DNS的DNS缓存(类似在网络层中的在本地网络发送的时候为了获得MAC地址的时候进行的ARQ缓存):
  • 每个域名服务器维护一个高速缓存,存存放最近用过的名字以及从何处获得名字映射信息的记录
  • 减轻根域名服务器的负载,是DNS查询请求和应答报文的数量大大减少
  • 为保持高速缓存中内容正确,DNS为没想内容设置计时器,并处理超过时限的项
  • 当权限域名服务器回答一个查询请求时,在相应中都指明绑定有效的时间值,对于时间值的确定有一个权衡关系: 如果增加时间值可以减少网络开销,而减少时间值可提高域名转换的准确性
6、DNS报文传输
  • DNS的查询和相应采用的UDP,端口为53,用户主机和域名服务器都是这样
  • DNS客户机为收到响应,则重新查询;若仍然失败,则向另一个服务器发送查询(域名服务器采用主备方式)
  • DNS查询报文含有16为的标识符,响应的报文含有对应的标识符,这样就可以将查询和响应进行对应
7、针对DNS的攻击:
  • 通过发送ICMP ping(其仅仅是发端发给收端,收端收到原封不动将收到的发送回来)报文攻击13个跟服务器(因为对于PING应该是本地DNS中没有的,那么就要向根服务器求助)
  • 发送大量的DNS请求报文给顶级服务器
  • 伪造目标主机向权限DNS发送DNS请求;导致目标主机接收大量的相应信息
  • 中间人攻击:截获主机请求报文,伪造应答,使主机重定向到错误的网址。因DNS查询没有认证机制,容易被篡改,通过对UDP端口53上的DNS查询进行检测,发现与关键词想匹配 的请求,则伪装成目标DNS向查询者返回虚假结果
  • 从上可以看出攻击的方式包括对根服务器灯的攻击,顶级域名服务器的攻击(使这两个服务器接收大量的无用查询),对主机(伪造主机发送请求,使主机接收很多的相应), 对主机(中间人冒充,使主机到达错误的IP地址)
攻击者冒充DNS服务器向主机提供错误的DNS新消息:
  • ARP:查询及响应,实现IP-MAC的映射
  • ARP缓存中毒:攻击者对目标设备进行ARP缓存中毒攻击,之后将拦截DNS查询请求,然后就能够发送欺骗性的DNS响应报文,导致主机访问错误的网站;根源在于未对目标主机认证。 但是根据域名解析的过程可知认证的过程又是非常困难的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值