TCP/IP详解卷一 笔记 第一部分

主要是对看的讲解TCP/IP的视频,做的笔记。然后又看了书,做了笔记的补充。
目录标号采用书中的标号,以便查阅。
参考视频:https://www.bilibili.com/video/av10610680?t=303

day1

四层结构:

主要作用
应用层处理特定的应用程序细节
运输层为两台主机上的应用程序提供端到端的通讯
网络层处理分组在网络中的活动
链路层处理与任何传输媒介的物理接口细节

实例:运行FTP程序的两台主机
在同一层上,双方都有对应的一个或多个协议进行通信。
应用程序通常是用户进程,下三层一般在(操作系统)内核中执行。
应用层关心应用程序的细节,下三层处理通信细节

发送从上层到下层是封装,接收从下层到上层是分用

端口号:
服务器一般通过知名端口号识别。
客户端端口号随机,服务器端口号固定。

第二章 链路层

2.2. 以太网和IEEE 802:
1. 概念:
以太网:是一种标准、CSMA/CD媒体接入方法、速率10Mb/s、地址48bit
IEEE 802:稍有不同的标准集
2. 格式:
数据46-1500字节
帧中不同的字段:
以太网是类型;
802.3是长度,不包括CRC检验码的后续数据长度
目的地址、源地址都是6字节
类型字段:
0800->IP;
0806->ARP协议
在这里插入图片描述
2.7 环回接口:
允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP通信。
localhost:127开头的IP地址

没看懂的问题: P2 NAT 32:20-38:14
2.8 最大传输单元MTU:在出方向计算
2.9 路径MTU:路径上最小的MTU

第三章 IP:网际协议

3.1 引言
IP提供不可靠、无连接数据报传送服务。
不可靠的简单处理算法:丢弃数据报,发送ICMP消息报给信源端。
无连接:IP不维护任何状态信息、IP数据报路径可能不同、可能不按顺序发送

  • 命令:ipconfig
    查看会话信息 netstat -an
    查看路由表 netstat -r 或者 netstat -rn 或者 route print

3.2 IP数据报首部:
在这里插入图片描述
服务类型TOS:3bit优先权子字段(现在已被忽略),4bit的TOS字段,1bit置0
标识:ID
标志:df | mf |
协议:1-ICMP; 6-TCP; 17-UDP
选项:记录路径、时间戳、宽松源站选路、严格源站选路
传输过程中IP地址不变,链路层的目的地址,即MAC地址逐跳改变

day2

第四章 ARP:地址解析协议

  • IP地址(逻辑地址)映射到MAC地址

  • 设备驱动程序从不检查IP数据报中的目的IP地址
    4.2 一个例子
    如果目的主机在本地网络上(如以太网、令牌环网或点对点链接的另一端),那么IP数据报可以直接送到目的主机上。如果目的主机在一个远程网络上,那么通过 IP选路函数来确定位于本地网络上的下一站路由器地址,并让它转发 IP数据报。

    ARP发送ARP请求广播包,所有网络中的主机都会收到;只有IP地址为目的地址的主机,ARP应答单播包,回给发送主机;发送主机可以发包。

4.3 ARP高速缓存
显示缓存中所有内容的查询命令:arp -a
清除 arp -d

4.4 ARP的分组格式
在这里插入图片描述
目的地址为全1的特数地址是广播地址
帧类型:0806-ARP
硬件类型:硬件地址的类型,1表示以太网地址。
协议类型:0800-IP
对于以太网上IP地址的ARP请求来说,硬件地址长度为6,协议地址长度为4
操作字段:1-ARP请求;2-ARP应答;3-RARP请求;4-RARP应答

4.6 arp代理:no ip routing设备发送arp请求
4.7 免费arp:指主机发送ARP查找自己的IP地址

第6章 ICMP

6.1 引言
传递差错报文以及其他需要注意的信息。
在这里插入图片描述

  • ICMP报文格式:
    在这里插入图片描述ICMP协议号为1
    类型+代码:(分为查询报文和差错报文)
    ping请求:80
    ping应答:00
    不可达3x(类型为3) 重定向5 超时11
    检验和:包括头部和后面的数据的校验

接收ICMP差错报文的模块就会把它与某个特定的协议(根据 IP数据报首部中的协议字段来判断)和用户进程(根据包含在 IP数据报前8个字节中的TCP或UDP报文首部中的TCP或UDP端口号来判断)联系起来。

  • 不会产生ICMP差错报文的情况:
    ICMP差错报文、目的地址是广播或多播地址、不是IP分篇的第一片、源地址不是单个主机

6.5 ICMP端口不可达
ICMP的一个规则是,ICMP差错报文必须包括生成该差错报文的数据报IP首部(包含任何选项),还必须至少包括跟在该 IP首部后面的前 8个字节。

第7章 ping

确定问题出在那里
主机的可达不只取决于IP层是否可达,还取决于使用何种协议以及端口号
多数TCP/IP实现都在内核中直接支持ping服务(被ping的设备)

  • ICMP回显请求和回显应答报文格式:
    在这里插入图片描述
    标识符:发送进程的ID号
    序号:逐个增加1
    填充数据:Unix数据中有发包的时间
    Windows中标识符相同,序号逐个加1,数据无意义,时间是计算机自动计算的

IP记录路由选项:

ping中的R选项记录所有出方向的接口,来回都记录了
缺点:能够记录的网络有限,只能存放9个地址;必须所有主机都支持
在这里插入图片描述
code指明IP选项的类型,对于R R选项的值为7

  • IP时间戳选项

Traceroute程序

win命令:tracert
TTL: 当路由器接收到的IP数据报的TTL字段为0或1,则路由其不转发该数据报,并给信源机发送“ICMP超时”信息
Traceroute程序发送UDP数据报给目的主机,选择一个不可能的值作为UDP端口号(大于30000),即端口号随机。端口号随着报文的发送而增加1。逐渐增加TTL的值,目的主机不可能使用这个端口号所以产生**“端口不可达”错误**。
tracert则通过ICMP操作,发送request
经过防火墙TTL不减1

  • IP源站选路选项
    逐跳改变目的地址,可以完成选路
    -
    严格源站:必须是直连
    禁用命令: no ip source-route

IP选路

路由守护进程
在这里插入图片描述

  • 选路的原理:1匹配主机地址 2匹配网络地址 3匹配默认路
    CISO:1明细策略路由 2明细路由 3策略默认路由 4默认路由
  • 初始化路由表:每初始化一个接口,就为接口创建一个直接路由
  • 转发或不转发:路由器转发,二层交换机和PC默认不转发
  • ICMP重定向差错:

day3

UDP

是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。不可靠
TCP是面向字节流的协议

  • 典型应用:查询类(快),数据传输,语音视频流

  • UDP封装:
    在这里插入图片描述
    在这里插入图片描述
    端口号表示发送进程和接收进程。TCP端口号与UDP端口号相互独立(rsh和syslog=514)
    UDP长度字段指的是UDP首部和UDP数据的字节长度,该字段的最小值为8字节。
    UDP检验和覆盖UDP首部和UDP数据。UDP检验和是可选的,TCP是必选的。
    12字节的伪首部,计算检验和而设置。
    在这里插入图片描述
    送出的数据报和收到的数据报具有相同的检验和值

  • IP分片
    IP把MTU(出接口)与数据报长度进行比较;
    分片可以发生在原始发送端主机,也可以发生在中间路由器
    重新组装由目的端的IP层来完成,其目的是使分片和重新组装过程对运输层(TCP和UDP)是透明的
    DF=1表示不要分片,直接丢弃,并告知MTU;MF=1表示这片不是最后一片。
    没法重传某个分片,需要重传整个数据报
    分片后只有第一片有ICMP信息
    除最后一个分片外,其他分片的数据部分(除IP首部外的其余部分)是8字节的整数倍。
    IP数据报是IP层端到端的传输单元,分组是IP层和链路层之间传送的数据单元。

  • ICMP不可达差错(需要分片)
    在这里插入图片描述
    除非接收到的第一个数据报片,否则不要求任何实现产生ICMP差错。
    最大UDP数据报长度:跟socket API、TCP/IP的内核实现、源端和目的端的实现有关
    数据报截断:取决于编程接口和实现
    ICMP源站抑制:中间路由器缓存不够用了,由中间路由器发送,sock程序要么没有接收到源站抑制差错报文,要么接收到却将它们忽略了
    UDP输入队列:发送端的发送速度快,接收端缓存满了,这种情况不会有任何报错
    限制本地IP地址:本地有多个IP地址,仅有某个地址才开放的端口号;另外的地址没有开放
    限制远端地址:
    每个端口有多个接收者:大多数系统在某个时刻只允许一个程序端点与某个本地IP地址及UDP端口号相关联

广播和多播

广播和多播仅应用于UDP
TCP是单播,分别运行于两主机(由IP地址确定)内的两进程(由端口号确定)间存在一条连接。

  • 从下层到上层
    【接口卡】:普通模式(目的地址为自己MAC地址的单播或者单播),混合/杂合模式(抓包) --如果帧检验和错–>丢弃
    【设备驱动程序】:帧类型中使用的协议(IP或者ARP)–如果没有上层信息或不属于某个多播地址–>丢弃
    【IP】:根据IP地址中的源和目的地址进行过滤 -->丢弃
    【UDP】:如果本地没有目的端口号,才丢弃广播
    结论:组播的接收主机少,消耗的资源也少

TCP

  • 提供面向连接的、可靠字节流服务。
    交换数据前必须先建立TCP连接,点对点连接。
    实现可靠性:数据分块;定时器,不能及时收到,就重发报文段;接收端发送确认;
    保持首部和数据的校验和;TCP对报文的处理(排序,处理IP层的错误);流量控制

  • TCP为应用层提供服务
    TCP对字节流的内容不做任何解释,对字节流的解释由TCP连接双方的应用层解释。

参考:TCP报文详解

  • TCP首部中的各个字段
    在这里插入图片描述
    一个IP地址和一个端口段称为一个插口(socket)。插口对socket pair
    序号
    :标识从TCP发端向TCP收端发送的数据字节流,它标识在这个报文端中的第一个数据字节的序号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从 0 开始。SYN和FIN各占一个序号。
    确认序号:上次已成功收到数据字节序号加1。只有ACK为1时,确认序号字段才有效。发送ACK不占用任何序号,一旦连接建立,该字段总被设置,ACK标志总被设置为1。
    TCP为应用层提供全双工服务,连接的每一端必须保持每个方向上的传输数据序号。
    TCP可以表述为没有选择确认或否认的滑动窗口协议。
    标识位
    流量控制:窗口大小是字节数,是接收方控制发送方可以连续发送未经确认的报文的数量。16bit,最大65535字节。(接收方的流量控制)

最常见的可选字段是最长报文大小。
TCP报文段中数据部分是可选的

  • TCP建立连接
    在这里插入图片描述
    发送第一个SYN的一端将执行主动打开。接收SYN并返回下一个SYN的另一端执行被动打开。
    ISN初始序列号
  • 连接终止
    在这里插入图片描述一个TCP连接在收到一个FIN后仍能发送数据。
  • 连接建立的超时:第一个SYN 重发机制
  • 最大报文段长度MSS:如果没有分段发生,MSS越大越好。
    本地MSS位MTU-40; 不是本地时,MSS默认536
  • TCP的半关闭
    在这里插入图片描述
    在这里插入图片描述
  • 2MSL等待时间:任何报文段被丢弃前在网络内的最长时间。
    主动发起断开的一端的IP地址和端口号,不能再被使用。
    在连接处于2MSL等待时,任何迟到的报文段将被丢弃。
  • 平静时间:重启时间的MSL时间内不能建立任何连接。
  • 复位报文段RST (reset):立即断开TCP连接。
    1.发送TCP连接道不存在的端口的连接请求;
    2.异常终止一个连接(异常释放),速度快
    3.检测半打开连接
    4.同时打开,同时关闭

    在这里插入图片描述
  • TCP选项(最多40bit)
    TLV结构的选项内容安排:type-length-value
    不到4bit的需要补充比特
    在这里插入图片描述
TCP的交互数据流

特点:包的数量多,全是小包
通常每个交互按键都会产生一个数据分组,效率低
在这里插入图片描述

  • 经受时延的确认 delayed ACK:等待200ms,看是否由数据一起发送
  • Nagle算法:要求一个TCP连接上最多只能有一个未被确认的未完成的分组。在该分组的确认到达之前不能发送其他的小分组。相反,TCP收集这些少量的分组,并在确认到来时以一个分组的方式发出去。
    对于网络的自适应,减少发送小包的数量;增加时延
    在这里插入图片描述
  • 窗口大小通告
    问题?
    在这里插入图片描述
TCP的成块数据流
  • 正常数据流:隔一个报文段确认的策略。
    线路上发送分组的顺序受到许多无法控制的因素的影响。

  • 快的发送方和慢的接收方:窗口更新ACK

  • 滑动窗口:允许发送方在停止并等待确认前可以连续发送多个分组。
    在这里插入图片描述
    在这里插入图片描述
    窗口合拢:数据被发送和并且得到确认时
    窗口张开:另一端的接收进程读取已经确认的数据并释放了TCP的接收缓存
    左边沿=ACK确定的序号的位置
    右边沿=ACK序号+WIN大小

  • PUSH标志:发送方使用该标志通知接收方将所收到的数据全部提交给接收进程。

  • 慢启动:
    发送方和接收方之间可能存在多个路由器和速率较慢的链路
    拥塞窗口是发送方使用的流量控制,通告窗口是接收方使用的流量控制。
    为发送方的TCP增加:拥塞窗口cwnd
    两台主机建立TCP连接后,cwnd=1
    发送方的发射上限=min(拥塞窗口,通告窗口)
    每收到一个ACK,拥塞窗口就增加一个报文段,指数增长

发送分组的时间:传播时延(电磁波在介质中的传播速率) + 发送时延(带宽,分组大小)
为了让最大限度地利用链路带宽,必须确保发送方不断地受到接收方发送的ACK,作为对受到数据的确认和更新window size的大小。
(带宽时延乘积) 传送通道容量=带宽*RTT

出现拥塞的情况:1.从快速到慢速的管道 2.多管道汇聚

-URG标识 紧急方式:
URG=1时,紧急指针才有效,是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。接收进程读取数据流并被告知合适碰到紧急数据指针。
例子:Telnet和Rlogin从服务器到客户使用“紧急方式:因为这个方向上的数据流很可能被客户的TCP停止,使得应用读取数据。
在这里插入图片描述

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值