计算机网络2

应用层

  1. 网络应用的体系结构
    • 客户机/服务器(c/s)
    • peer to peer (点对点结构)
    • 混合结构
  2. TCP/UDP区别
    tcp/udp
  3. HTTP
    • 采用无状态的机制(服务器不维护任何有关客户端过去所请求的消息)
    • 采用请求/响应的模式
    • 使用TCP传输
持久性连接 非持久性连接
每个tcp连接只允许传送一个对象 允许传送多个对象
HTTP1.0 HTTP1.1
  1. 代理服务器与远程服务器之间的更新

    • 条件性GET(如果缓存有最新的版本则不需要发送请求对象)
      在HTTP请求消息中声明所持有版本的日期
      1
      If-modified-since <date>
  2. SMTP(邮件)

    • 采用TCP(可靠)持久性连接
    • 通过ASCII采用命令/响应的模式
    • 端口25
    • 用MIME进行消息内容扩展,使其可以传输非ASCII数据(二进制、多媒体)
  3. DNS

    1. 是一个多层命名服务器构成的分布式数据库(为什么不用集中式)

      • 单点失败
      • 流量问题
      • 距离问题
      • 维护性问题
    • 应用层协议:完成名字的解析(在应用层实现Internet的核心服务)
    • 域名解析过程
      • 向本地域名服务器请求,若本地不知道则直接请求根域名服务器
      • 根域名服务器一般不知道,则返回顶级域名服务器(.com/.cn/.org…..)
    • 全球总共有13个根域名服务器
    • 域名服务器
      • 根域名服务器
      • 顶级域名服务器(负责.com/.cn/.org…..)
      • 权威域名服务器(组织的域名服务器,提供组织内部服务器的解析服务)
      • 本地域名解析服务器
        • 每个ISP都有默认的本地域名服务器
        • 作为代理去查询分层式域名服务器
      • DNS查询
        • 迭代查询(本地域名服务器负责根据指示依次查询域名服务器)
        • 递归查询(本地域名服务器只向根域名服务器请求,根域名服务器再去请求顶级域名服务器,顶级再去查询权威,然后将结果依次返回)
      • DNS缓存和更新
        • 只要域名解析服务器获得一个新的域名-ip映射,即缓存这一映射
        • 本地域名服务器一般会缓存顶级域名服务器(根域名服务器一般不会被访问)
    • DNS记录(资源记录 Resource Record)
      • format:(name, value, type, ttl)
      • type = A
        • name 主机域名
        • value ip地址
      • type = NS
        • name:域(edu.cn)
        • value:该域权威域名解析服务器的主机域名)
      • type = cname
        • name :某一真实域名的别名
        • value:真实域名
      • type = MX
        • value是于name相对应的邮件服务器
    • DNS协议(查询/回复)

P2P

  1. 纯p2p架构
    • 没有服务器
    • 任意端系统之间直接通信
    • 节点阶段性接入internet
    • 节点可能更换ip地址
    • 多用户同时下载时性能比C/S优(C/S随着用户数增加耗时线性增长,p2p则是有个阈值)
  2. p2p例子:BitTorrent
    • 下载的同时进行发送(可以发送自己的,也可以发送刚刚下载的)
    • 稀缺文件优先下载(防止端系统离开)
    • 上传
      • 向给自己发送的4个需要下载的端系统发送数据
      • 每10s重新评估top4
      • 每30s随机选择一个其他结点,向其发送
  3. 索引技术

    1. 集中式索引

      • 单点失败
      • 性能瓶颈
      • 法律
    2. 完全分布式索引

      • 完全分布式架构
      • 每个节点对他共享的文件且只对他共享的文件进行索引
      • 覆盖网络实现全局性文件搜索
      • 采用洪泛式查询,查询命中之后反向回传
    3. 层次式覆盖网络

      • 介于集中式索引和洪泛式查询的方法
      • 每个结点或者是一个超级结点,或者被分配一个超级节点
      • 节点和超级节点之间维持TCP
      • 某些超级节点对之间维持TCP
        • 普通节点向超级节点请求查询
        • 超级节点之间使用洪泛式查询
      • 超级节点负责跟踪字节点的内容
  4. 危害

    • 对硬盘的损坏(高温、重复读写、扇区损坏)
    • 占用网络带宽资源
    • 助长病毒传播
    • 盗版
  5. 覆盖网络

    • 节点X与节点Y之间若有TCP连接那么构成一条边
    • 所有活动的节点和边构成覆盖网络
    • 节点一般邻居数少于十个

socket编程

  1. 套接字使用时不用指定端口号,由操作系统负责分配和管理,用套接子描述符即可
  2. windows对unix socket进行封装形成winsock,程序使用时以WSAStartup开头(初始化api),以WSACleanup(释放windows socket DLL)结尾

  3. 当多个进程同时是使用socket时,socket数据结构里有对其计数的变量,关闭一个则减1,到0才关闭此数据结构

  4. 同一个进程中的多个线程不能同时调用一个socket
  5. 当一个主机中有多个ip时,服务器端调用bind时用INADDR_ANY
  6. listen、accept只用于服务器,监听端口,只是用于tcp
  7. connect之用于客户端,tcp/udp
  8. send, recv 适用于TCP或者调用connect的UDP
  9. sendto, recvfrom用于未调用connect的UDP
  10. socket流程