zoukankan      html  css  js  c++  java
  • TCP/IP详解卷一: 协议之第1~3章

    p1~p37.

    第1章概述

    分层

    • 分层: 链路层(驱动, 网卡), 网络层(IP, ,ICMP, IGMP), 运输层(TCP, UDP), 应用层(HTTP, Talent, FTP, SMTP, SNMP等).
    • 下三层一般在内核中执行, 应用层在应用进程中执行

    IP的5类地址

    A, B, C, D, E5类地址

    192.168.1.1(N1.N2.N3.N4)
    A类: N1<128
    B类: 128<=N1<192
    C类: 192<=N1<224
    D类: 224<=N1<240
    E类: 240<N1<248

    看下各网站地址属于什么类型, 如qq.com(125.39.52.26) A类, taobao.com(140.205.94.189) B类.

    协议栈

    以太网数据帧的长度在46~1500字节. 当主机收到以太网数据帧时, 每层协议会检查首部, 然后去掉首部丢给下层协议解析, 直到应用程序拿到报文内容.

    客户-服务端模型

    重复型, 代表redis

    1. 等待一个客户请求的到来
    2. 处理客户请求
    3. 发送响应给发送请求的客户
    4. 返回第1步

    并发型, 代表nodejs

    1. 等待一个客户请求的到来
    2. 启动一个新的服务来处理这个客户的请求

    端口号

    • TCP和UDP采用16bit的端口号来识别程序(1~65535)
    • 知名端口, 如FTP的TCP端口21, Talent的TCP端口23, TFTP的UDP端口69, 网络服务80.
    • 一般1~1023为知名端口, 1024~5000为临时端口, 大于5000为其他服务器预留.

    RFC

    所有有关Internet的正式标准都以RFC(Request for Comment)文档出版.

    第2章 链路层

    以太网 vs IEEE 802

    2套不兼容的标准, RFC 894和IEEE 802.2/802.3(RFC 1042).

    SLIP vs PPP

    PPP协议传输效率更高

    环回接口(localhost)

    参考环回接口

    路径MTU

    当一个网络上的两台主机通信, 取决通信过程中的最小MTU, 成为路径MTU.

    查看本机MTU的命令(windows)

    netsh interface ip show interfac
    

    第3章 IP网际协议

    IP不可靠(unreliable): 不能保证IP数据报能成功到达目的地.
    IP无连接(connectionless): IP不维护任何后续数据报的状态信息. 每个数据包的处理是独立的, 可以不按发送顺序接收.

    IP首部

    普通IP首部20个字节.

    1. 4位版本, 目前主要2种, 4和6, 即IPV4和IPV6
    2. 4位首部长度, 指IP首部32bit的长度, 普通IP是20字节, 所以这个值一般是5(32bit*5 = 20Byte).
    3. 8位服务类型(TOS), 包括3bit优先权子字段(现在已被忽略), 4bit的TOS子字段, 1bit未用位(必须置0). 4bit的TOS分别代表: 最小时延, 最大吞吐量, 最高可靠性, 最小费用. 4bit只能置1个bit, 所有均为0, 则为一般服务.
    4. 16位总长度字段, 指的整个IP数据报的长度, 以字节为单位. 利用首部长度和总长度, 就可以知道IP数据报种数据内容的起始位置和长度. 由于是16位, 所有IP数据报最长可达65535字节.
    5. 16位标识, 标识字段唯一地标识主机发送的每一份数据报. 通常每发送一份报文, 值就加1.
    6. 3位标志和13位片偏移. 先忽略.
    7. 8位生存时间(TTL). 该字段设置了数据报可以经过的最多路由器数. TTL初始值由源主机设置(一般128), 一旦经过一个处理它的路由器, 就减1. 当值为0时, 数据报就被丢弃, 并发送ICMP报文通知源主机.
    8. 8位协议.
    9. 16位首部检验和. 是根据IP首部计算的检验和码, 不对首部后面的数据进行计算. ICMP, IGMP, UDP和TCP在他们各自的首部中均含有同时覆盖首部和数据的检验和.
      发送方计算检验和, 对首部每个16bit进行二进制反码求和, 结果存到检验和字段. 接收方接收IP数据报后, 同样对首部中每个16bit进行二进制反码的求和, 如果结尾全为1, 则检验和通过, 反之, 检验和不通过, IP就丢弃该数据报. 由上层发现数据丢失并重传.

    IP路由选择

    当收到网络接口来的数据报时, IP首先检查目的IP地址是否为本机地址或者IP广播地址, 如果确实是这样, 就被送到由IP首部协议字段所指定的协议模块处理. 如果不是, 则有2种选择, (1) 如果IP层被设置为路由器功能, 就对数据报进行转发, 否则(2) 数据报被丢弃.

    路由表包含:

    1. 目的IP地址.
    2. 下一站(或下一跳)路由器的IP地址.
    3. 标志, 一个标志指明目的IP地址是网络地址还是主机地址, 另一个标志指明下一站路由器是否为真正的下一站路由器.
    4. 为数据报的传输指定一个网络接口.

    子网

    由于A类和B类地址为主机号分配了太多地址, 所以产生子网. 如B类的主机号有16位, 一般将前8位划分为子网号, 后8位为主机号.
    将网络号和子网号都设置为1, 即为子网掩码, 如常见的255.255.255.0. 子网掩码判断是否属于同一子网.

  • 相关阅读:
    Spring MyBatis多数据源分包
    ubuntu Ngin Install
    Ubuntu16.04开启root用户,并远程登录
    ubuntu16.04LTS更换阿里源
    修改DIV滚动条样式
    Spring-Boot配置文件数据源配置项
    Springboot 版本+ jdk 版本 + Maven 版本的对应关系
    CAS配置(3)之restful-api接入接口
    Java.Cas4.0客户端接入配置
    Java.HttpClient绕过Https证书解决方案二
  • 原文地址:https://www.cnblogs.com/winwink/p/TCPIP_Note_Part1_1-3.html
Copyright © 2011-2022 走看看