DNS域名

DNS:域名系统
域名:是个便于记忆的字符串,是一个服务器的别名,访问服务器时通过解析得到服务器的IP地址进行访问
一个域名服务器支撑不了所有人的访问,因此采用分布式存储麻将域名信息分散存储到世界各地
服务器划分:根域名服务器->顶级域名服务器(.com .org (按用途) .cn(按地域))
域名划分:
顶级域名:.com/.org/.gov… .cn/.en/.jp
二级域名:baidu.com qq.com
三级域名:zhidao.baidu.com
域名解析流程:

  1. 查看缓存信息
  2. 查看本地hosts文件
  3. 请求本地域名服务器
  4. 请求根域名服务器
    典型面试题:浏览器中输入url,回车后都发生了什么?
  5. 域名解析->2.搭建tcp客户端->3.组织http请求->4.发送请求->5.等待回复,解析http响应->6.根据content-type解析处理正文
    服务端5服务器收到请求进行解析->6.业务处理->7.组织http响应
    ICMP协议:是一个网络层协议,通常用于进行网络探测
    Ping这个工具使用的就是ICMP协议
    telnet使用的是23号端口 ssh-22 ping—根本就不用端口
    NAT/NAPT:网络地址转换技术
    用于组建私网,私网中的主机对外通信时,部署于网关设备上的NAT服务进行源端地址转换(建立映射关系),转换为对外地址然后进行数据转发。私网中的主机使用同一个对外公网地址上网,节省公网地址的使用

代理服务:vpn翻墙

Nat是一个服务,部署在网关设备上,工作在网络层进行地址转换
代理是一个应用,部署在任意设备上,工作在应用层

高级IO:四种典型IO方式,多路转接IO
四种典型IO方式:
IO:输入输出—过程:等待IO就绪,进行数据拷贝
典型IO:阻塞IO,非阻塞IO,信号驱动IO,异步IO

  1. 阻塞:发起IO调用,若IO未就绪则(IO条件不具备)一直等待
  2. 非阻塞:发起IO调用,若IO未就绪,则立即报错返回
  3. 信号驱动:自定义IO信号处理,等待IO就绪收到信号打断当前操作进行IO
  4. 异步IO:自定义IO信号处理,发起IO调用,调用立即返回,但让系统完成IO,完成后通过信号通知进程。

阻塞IO优点:流程最为简单
缺点:效率较为低下

非阻塞IO优点:效率相较于阻塞有所提高
缺点:需要循环进行操作,不够实时

信号驱动
优点:效率更高,实时性更强
缺点:操作流程更为复杂-需要定义信号处理…

异步IO
优点:对于资源利用率极高,效率极高
缺点:流程最为复杂
从阻塞IO到异步IO是一个对资源利用率以及效率提高的过程,也是流程变得复杂的过程
阻塞:为了完成一个功能,发起一个调用,若完成功能条件不具备,则一直等待
非阻塞:发起一个调用,若完成功能条件不具备,则立即报错返回
阻塞与非阻塞:通常用于描述某个接口发起调用后是否能够立即返回
同步:一个功能完成后,才能进行下一个,若不能完成则一直等待
异步:发起一个调用,让别人完成具体功能,不用等待功能完成后才能继续推进
同步与异步:通常用于描述功能的完成流程,(外部体现就是功能是否是自己完成的)
异步阻塞与异步非阻塞:
异步阻塞:发起一个调用,让系统完成任务,进程一直等着系统完成任务
异步非阻塞:发起一个调用,让系统完成任务,进程继续做自己的事情

多路转接IO:IO多路复用
作用:针对大量描述符进行IO就绪事件监控,让进程仅仅针对已经就绪了IO事件的描述符进行IO操作,避免了进程对未就绪的描述符进行操作所带来的性能损失或者阻塞。
实现:select poll epoll
IO就绪事件:可读,可写,异常
Select模型:针对大量描述符进行IO就绪事件监控
操作流程:

  1. 定义指定IO事件的描述符集合,将需要监控指定事件的描述符添加到对应集合中
  2. 发起调用,将需要监控的多时间描述符集合拷贝到内核,进行事件监控
    若监控超时了都没有描述符就绪则返回
    若有描述符就绪了指定监控的事件则返回
    在监控调用返回前,都会将描述符集合中没有就绪事件的描述符移除也就是说调用返回后集合中保留的只有就绪的描述符
  3. 判断哪个描述符还在哪个集合中,就知道哪个描述符就绪了什么事件,进而进行对应IO操作

接口认识:

  1. 定义集合:fd_set rfds, wfds,efds
  2. 清空集合:void FD_ZERO(fd_set *set);
  3. 将描述符添加到集合中:void FD_SET(int fd,fd_set *set);
  4. 发起监控调用
    int select(int nfds,fd_set *readfds, fd_set *writefds,fd_set *exceptfds,struct timeval *timeout);
    nfds:所有集合中最大的描述符的值+1
    readfds/writefds/exceptfds:可读,可写,异常,不监控置空
    timeout:监控超时等待时间 struct timeval{tv_usec,tv_sec}
    一直等待则置NULL,非阻塞则数据置0
    返回值:返回实际就绪的描述符个数;出错返回-1;超时返回0;
  5. 调用返回后,判断哪个描述符还在集合中确定哪个描述符就绪了什么事件
    Int FD_ISSET(int fd,fd_set *set);
  6. 从指定集合中移除指定的描述符
    Void FD_CLR(int fd,fd_set *set);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值