• 网络编程 csapp


    客户端 服务器 是进程

    网络 IO设备 数据源与数据接收方

    数据 适配器 IO 内存总线 内存

    协议:一致性

    命名

    传送数据(打包)

    语义抽象,封装接口:套接字

    IP:IP地址 区别主机

    UDP TCP :端口号区别进程

    DNS域名系统

    域名:IP地址

    localhost:127.0.0.1

    通信:在连接上发送接收 字节流

    对进程而言,连接是 点对点,全双工的

    套接字:连接的端点

    地址:端口

    客户端:端口由内核自动分配,临时端口

    服务器:知名端口

    套接字对:确定一个连接(双向)

    套接字接口:一组函数

    +Unix IO

    =网络应用

    linux内核角度

    套接字是通信端点,有相应描述符的打开文件

    connect,bind,accept函数要求参数:指针:指向套接字地址结构

    socket函数创建套接字描述符

    返回的clientfd描述符是部分打开的,不能读写

    传参:地址,协议类型?

    connect函数建立连接

    成功后描述符可以读写

    bind,listen,accept

    服务器函数,用于连接客户端

    客户端:发起请求的主动实体

    服务器端:等待请求的被动实体

    内核默认socket创建主动实体(客户端)

    listen指明为被动(服务器)

    将套接字从主动套接字转化为监听套接字(一次)

    accept等待客户端请求

    返回已连接套接字(多次)

    getaddrinfo

    getnameinfo

    open_clientfd

    open_listenfd

    web服务器:HTTP协议

    web内容:MINE类型的字节序列

    提供内容的方式:

    取磁盘文件:静态

    运行可执行文件:动态

    URL:通用资源定位符

    文件名?参数&参数

    客户端:前缀访问服务器

    服务器:后缀定位文件

    HTTP请求:

    请求行

    请求报头,结束标记(空行)

    请求行:

    method URI  vers

    URI:URL后缀

    请求报头:额外信息

    header-name:header-data

    HTTP响应

    响应行 

    version status-code status-message

    响应报头

    响应主体

    CGI:环境变量

    客户端参数

    CHI程序:标准输出重定向到套接字

    当文件映射到内存,不再需要其描述符了

  • 相关阅读:
    面试题--赵银科技
    面试题--乐视.滴滴
    面试题--CVTE
    面试题--美团
    面试题--百度
    面试题--京东 有用
    mybatis的执行流程 #{}和${} Mysql自增主键返回 resultMap 一对多 多对一配置
    SpringMVC第一天
    LeetCode -- Maximum Product Subarray
    LeetCode -- Product of Array Except Self My Submissions Question
  • 原文地址:https://www.cnblogs.com/qmcj/p/9163434.html
Copyright © 2020-2023  润新知