CMU CSAPP笔记 第十一章

基本网络知识

  • 客户端和服务器

    • 客户端和服务器都是进程
    • 一台主机可以同时运行多个不同的客户端和服务器,一个客户端和服务器的事务可以运行在不同的主机
  • 网络系统层次

    • LAN(局域网)
      • Ethernet(以太网)
    • WAN(广域网)
      这里写图片描述

    这里写图片描述

  • 数据的传输过程
    这里写图片描述

这里写图片描述

  • TCP/IP协议

    • IP
      • 基本的命名方法和递送机制
      • IPv4和IPv6
        • 最初的互联网协议使用32位地址,称位IPv4,而IPv6有128位地址
      • IP地址通常以一种点分十进制来表示
        • 128.2.194.242就是地址0x8002c2f2
    • UDP
      • 不可靠数据报协议
      • 使得包可以在进程间而不是主机间传递
    • TCP
      • 提供进程间可靠的双向链接
  • 域名

    • 从后往前解析
    • 通过一个叫做DNS的分布式数据库来维护
    • 将IP地址与域名映射
      • 一个IP地址可以映射到多个域名,一个域名也可以映射到多个IP地址
      • 每个主机都有本地域名localhost
      • 通过Linux下的nslookup命令可以查看域名对应的IP地址

这里写图片描述

Socekt

  • socket(套字节)
    • 套字节地址:IP地址:端口
      • 例如199.16.156.198:80
    • 端口分为临时端口和知名端口
      • 客服端一般为临时端口,服务器一般为知名端口,有相应的服务名
      • WEB服务器端口通常为80(http),电子邮件端口为25(smtp)
      • 端口为16bit整数
  • socket接口
    • socket从Linux程序角度来看就是一个file descriptor
    • 地址结构
      这里写图片描述

这里写图片描述

  • 服务器和客户端的连接过程

    • 服务器和客户端都调用socket函数创建文件描述符
    • 服务器调用bind函数准备连接
    • 由于默认socket描述符用于客户端,服务器调用listen函数将其转变为监听描述符,这个描述符服务器自开机运行只创建一次
    • 最后调用accept函数等待服务器请求到达,返回已连接描述符,这个描述符每当一个服务器和客服端连接就创建一个
      • 区分监听和已连接的目的是创建并发服务器,同时处理多个客户端
    • 同时客户端(用户)调用connect函数准备连接,打开clientfd描述符
    • 当客户端断开后,将会向服务器发送EOF结束符,服务器收到后关闭
      • EOF实质上不是一个字符,而是一个内核检测的条件
  • listen函数返回的监听描述符和accept返回的已连接描述符是不同的

    • 前者在服务器开始运行的整个周期内只有一个,后者每和一个客户端连接就产生一个
    • 这样是为了一个服务器可以和多个客户端连接,从而实现并发服务器
  • 如图, 可以用open_clientfd和open_listenfd函数封装这些函数

这里写图片描述

  • getaddrinfo函数
  • 可以编写独立于特定版本的IP协议的网络程序
  • 将主机名,主机地址,服务名和端口号转换为套字节地址结构

WEB服务器

HTTP事务

  • HTTP请求
    • 首先要连接服务器和客户端
    • 格式:method URI version
    • method一般为 GET
    • URI为URL端口后面的部分
    • version为HTTP版本,一般为HTTP/1.0或HTTP\1.1
  • HTTP响应的常见状态码

这里写图片描述

  • 传递动态内容
    • ?分割文件名和参数
    • 每个参数用 & 隔开
    • 举例: GET /adder?1500&213 HTTP/1.1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值