《图解TCP_IP》阅读笔记

基础知识

  • TCP_IP协议是IP.TCP, UDP, HTTP等一系列协议的集合

    • TCP/IP模型中对数据链路层和物理层未作定义,视为透明
      在这里插入图片描述
  • OSI分层模型

    • 如果不进行协议分层,那个最终的大协议会是否复杂,难以实现,也不利于后续的优化和拓展
    • 应用层
      • 针对特定应用的协议
      • 例如电子邮件协议(SMTP),远程登录协议(SSH),文件传输协议(FTP)
    • 表示层
      • 把数据从特定的格式转换为网络通用的标准数据格式
      • 例如HTML,MIME协议
    • 会话层
      • 表示层和会话层在TCP/IP模型中是合并到应用层中的
    • 传输层
      • TCP/UDP等协议
    • 网络层
      • IP,ARP等协议,硬件为路由器等
    • 数据链路层
      • PPP等协议,硬件为网桥、交换机等
    • 物理层
      • 硬件为中继器,双绞线等
  • IP和MAC地址都具有唯一性,但是只有IP地址具有层次性

    • 通过IP地址是按照位置信息组织的,可以快速定位终端
    • MAC地址是根据厂家和产品编号等组织的,但是并不能确定哪家的网卡被用到那个地方,无法寻址
  • 网关的作用之一是可以让两个不兼容的协议实现通信

    • 比如互联网邮件协议和手机邮件协议不兼容,中间就要通过网关翻译
      在这里插入图片描述

数据链路层

  • 该层主要是在同一种数据链路的节点直接进行包传递
    • 如果跨越多种数据链路,就是网络层的任务了
      在这里插入图片描述
  • MAC地址长48bit,由厂商识别码和厂内识别码组成,是全世界唯一的
  • 交换机
    • 交换机实现了全双工通信
    • 根据目标MAC地址决定从哪个接口发送数据
    • 使用转发表参考、记录发送的接口
  • 以太网又被称为IEEE802.3,无限局域网又被称为IEEE802.11

IP协议

在这里插入图片描述

  • IP协议是对不同数据链路的抽象,无论底层使用以太网还是PPP,都一视同仁
  • IP协议无论接收方是否存在都会发送出去,也不验证对方是否收到
    • IP协议属于无连接协议,无确认机制
      • 目的在于简化和提速
    • 保证可靠性的任务可以由上一层的TCP协议完成
      • 如果IP和TCP合并则协议的实现会变得很复杂,目前的方式每一层的任务更加明确,也利于后续拓展和优化
    • 这样做是为了提高传输速度,减少协议实现的复杂度
  • IP首部
    在这里插入图片描述

IP地址

  • IP地址的组成

    • IPv4地址32位,一共课链接约42亿设备
    • IP地址是和网卡一一对应的,而非主机
    • 地址由网络地址和主机地址组成
      • IP包被路由转发时,主要依据网络地址
      • 主机地址相当于局域网地址,用于区分局域网中的不同主机
      • 分割网络与主机地址依靠子网掩码
      • 主机地址不能全为0或1,所以下面的C类地址只有254个主机地址
  • IP地址和子网掩码是相互独立的概念,子网掩码不是IP地址的一部分!!

    • 举个例子,10.10.10.1/24和10.10.10.1/25是同一个IP地址
    • 子网掩码一般是路由器在构建路由表的时候使用的
      在这里插入图片描述
  • 旧的地址分类

    • ABCD类地址现在只是一个历史概念,实际已经没有意义了
    • 现在使用CIDR代替,就是把多个地址合并为一个更大的地址
      在这里插入图片描述在这里插入图片描述
  • CIDR地址分类

在这里插入图片描述
在这里插入图片描述

  • 全局地址和私有地址
    • 过去每一个主机都必须有唯一的IP地址,否则会产生地址冲突,不知道该传向哪个主机
      • 但是这样会造成IP地址不足的问题
      • 于是产生的私有地址
    • 私有地址
      • 私有地址可以重复,知道局域网内唯一即可
      • 为了防止私有地址在访问外网时与全局地址冲突,我们把分配了几段地址作为私有地址,所有的私有地址应该在这一范围内
        • 如果使用全局地址作为私有地址,路由器会拒绝传出外网
      • 为了访问外网,我们使用了NAT技术转化私有地址和全局地址
  • NAT协议
    • 第一种为静态转化,就是一一映射,但是这样没有减少全局地址的使用
    • 第二种为动态转化,相当于线程池的做法,轮转使用
      • 这样的缺点在于局域网内设备数量不能超过所映射的全局地址太多
    • 第三种为端口转化,就是把不同的内网地址转化为同一去全局地址的不同端口
      在这里插入图片描述
  • ICMP协议
    • 主要功能是确认IP包是否成功到达目标地址,IP包被丢弃的原因等
      • 一般由丢弃包的路由器发送在这里插入图片描述
    • PING命令就是利用ICMP协议实现的
    • ICMP还能返回重定向信息,以便路由器更新路由表
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
  • DHCP协议
    • 自动设置IP地址,同一管理IP地址分配
    • 用户在接入网络后无须先设置IP地址,而是在子网中架设一个DHCP服务器,计算机自动向该服务器请求可用IP地址
      • 使用UDP协议请求
      • 该服务器一般由路由器充当

TCP与UDP

  • TCP虽然能够处理丢包,乱序等问题,但是连接和断开很复杂,导致了网络流量的浪费
  • UDP不关注接收端是否收到数据,因此更快
    • 视频,音频等数据适合用UDP传输
  • UDP和TCP可以同时使用同一端口
    • 所以五元组里有协议号
  • 三次握手和四次握手
    在这里插入图片描述

滑动窗口

在这里插入图片描述
在这里插入图片描述

  • 由于滑动窗口的出现,一次可以发送不止一个数据包,因此接收方可以不用每次接收到数据就回复,可以合并回复
    在这里插入图片描述
  • 慢启动
    • 滑动窗口的大小会在通信过程中从1指数比例增长
    • 为了防止过快增长,设置了一个慢启动阈值,超过后线性增长
    • 阈值的设定为超时重发或者重复确认应答时的窗口大小的一半
      在这里插入图片描述

分片

  • 由于链路层中不同种类的最大传输单元(MTU)大小不同,因此需要进行分片,大包分小包
    • 过去的分片是由路由器进行的
  • 为了提高传输效率,小包只有在目标主机才能重新合并
    • 这会使得其中一个小包的丢失导致整个大包无用
    • 如果中间路径上有防火墙需要完整的数据包,也是需要重组的
  • 对此我们可以选择在发送端(TCP协议)就分片,这样所有片都是独立的
    • 这就要我们多次尝试,找到可以被传输的大小
    • 所以TCP协议一般不用IP层再分片了
    • 而UDP有消息边界,一个UDP包代表一个完整信息,因此不会分片,只会在IP层分片
  • 当发生IP层分片时,TCP和UDP的header都在第一个分片上
  • TCP的路径MTU发现
    • 发送端到接收端经过所有路径不需要分片的最大MTU大小
    • 是在三次握手时确定的
      在这里插入图片描述
      在这里插入图片描述

首部

在这里插入图片描述
在这里插入图片描述

路由协议

在这里插入图片描述

  • 默认路由地址
    • 0.0.0.0
    • 所有没有匹配项的地址都由该地址匹配
  • 环路路由地址
    • 127.0.0.1(localhost)
    • 同一计算机上的程序之间进行网络通信是使用的默认地址
  • RIP路由协议
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值