• linux高性能服务器编程第一章 TCP/IP协议族


    TCP/IP协议族体系结构和主要协议

    协议族中协议众多, 这本书只选取了IP和TCP协议 - 对网络编程影响最直接

    同样七层是osi参考模型, 简化后得到四层 不同层次之间, 通过接口互相交流, 这样方便了各层次的修改

    应用层 负责处理应用程序的逻辑

    表示层 定义了数据的格式及加密

    会话层 它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的

    传输层 为两台主机的应用提供端到端(end to end)的通信. 与网络层使用的下一跳不同, 他只关心起始和终止, 中转过程交给下层处理. 此层存在两大协议TCP协议和UDP协议 TCP协议(Transmission Control Protocol 传输控制协议)

    • 为应用层提供可靠的, 面向连接, 基于流的服务
    • 通过超时重传数据确认等确保数据正常送达.
    • TCP需要存储一些必要的状态, 连接的状态, 读写缓冲区, 诸多定时器 UPD协议(User Datagram Protocol 用户数据报协议)
    • 为应用层提供不可靠的, 无连接的, 基于数据报的服务
    • 一般需要自己处理数据确认超时重传的问题
    • 通信两者不存储状态, 每次发送都需要指定地址信息. 有自己的长度

    网络层 实现了数据包的选路和转发. 只有数据包到不了目标地址, 就下一跳(hop by hop), 选择最近的. IP协议(Internet Protocol) 以及 ICMP协议(Internet Control Message Protocol) 后者协议是IP协议的补充, 用来检测网络连接 1. 差错报文, 用来回应状态 2. 查询报文(ping程序就是使用的此报文来判断信息是否送达)

    数据链路层 实现了网卡接口的网络驱动程序. 这里驱动程序方便了厂商的下层修改, 只需要向上层提供规定的接口即可. 存在两个协议 ARP协议(Address Resolve Protocol, 地址解析协议). 还有RARP(Reverse ~, 逆地址解析协议). 由于网络层使用IP地址寻址机器, 但是数据链路层使用物理地址(通常为MAC地址), 之间的转化涉及到ARP协议ARP欺骗, 可能与这个有关, 目前不去学习

    封装 上层协议发送到下层协议. 通过封装实现, 层与层之间传输的时候, 加上自己的头部信息. 被TCP封装的数据成为 TCP报文段

    • 内核部分发送成功后删除数据

    被UDP封装的数据成为 UDP数据报

    • 发送后即删除

    再经IP封装后成为IP数据报 最后经过数据链路层封装后为 

    以太网最大数据帧1518字节 抛去14头部 帧尾4校验 MTU: 帧的最大传输单元 一般为1500字节 MSS: TCP数据包最大的数据载量 1460字节 = 1500字节 - 20Ip头-20TCP头 还有额外的40字节可选部分

    ARP ARP协议能实现任意网络层地址到任意物理地址的转换

  • 相关阅读:
    判断一下是星期几
    猴子分桃
    免子生免子
    字符串排序
    非关系型数据库(一)
    学习redis简介(一)
    SAVEPOINT
    *****POSTGRESQL文檔
    程序员人生之路(分析的非常透彻!)
    UpperCase for ALL Text Editors
  • 原文地址:https://www.cnblogs.com/mjhjl/p/16229041.html
Copyright © 2020-2023  润新知