图解TCP/IP笔记

OSI参考模型

物数网传会表应

TCP/IP分层模型

应用层:DNS, HTMI,HTTP...(应用程序)会表应

传输层:TCP,UDP, UDP-Lite,SCTP, DCCP(操作系统)传

互联网层:ARP, IP,ICMP(操作系统)网

网卡层、硬件(设备驱动程序与网络接口)数、物

互联网层

-IP协议

IP地址作为主机的标识。

无重发机制,属于非可靠性传输协议。

-ICMP协议

无法送达则返回异常,可用于网络诊断。

-ARP协议

从分组数据包中解析出MAC地址的协议。

传输层

-TCP协议

面向有连接的传输层协议。保证通信可达。正确处理丢包和乱序的异常。有效利用带宽,缓解网络拥堵。

规范复杂,不适用于视频会议等场合。

-UDP协议

面向无连接的传输层协议。不关注对端是否接收,如果要保证收到或确认对端连接需要在应用程序实现。

用于分组数据较少或者多播、广播及视频等多媒体领域。

应用层

HTTP,SMTP, FTP, TELNET,  SSH, SNMP

TCP/IP分层模型

数据包:以太网包首部+IP包首页+TCP包首部+数据

包:全能性术语

帧:数据链路层中包的单位

数据报:IP和UDP等网络层以上的分层中的包的单位

段:TCP数据流中的信息

消息:应用协议中数据的单位

包结构

以太网包首部+IP包首页+TCP/UDP包首部+数据+以太网包尾

每个包首部包含:发送端和接收端地址,上一层协议类型(或者说下一个首部的协议)

数据链路

共享介质网络:争用方式,令牌传递方式

非共享介质网络:环路检测技术(生成树方式,源路由法),VLAN

IP协议

IP基础

网络层:实现终端节点之间的通信。

主机:配置有IP地址,不进行路由控制的设备。

路由器(网关):IP地址+路由控制

节点:主机+路由器

IP协议三大作用:IP寻址、路由(最终节点为止的转发)、IP分包与组包

路由控制:将分组数据发送到最终目标地址的功能

路由控制表:每个主机都维护一张路由控制表

数据链路的抽象化:IP是实现多个数据链路之间通信的协议。对不同数据链路的相异特性进行抽象化也是IP的重要作用。

不同数据链路的区别:MTU (Maximum Transmission Unit) 最大传输单位 不同

IP分片处理:可以对上层隔离数据链路的MTU差异

IP面向无连接:发送数据前无需建立连接。特点:需要即外发(无需连接)、主机监控网络只接收自己的数据包、未准备好可能丢包、存在冗余通信。原因:简化、提速。

IP地址基础知识

IP地址:32 = 8 * 4  网络标识+主机标识

网络标识:数据链路的每个段配置不同的值

主机标识:同一网段必须唯一

IP地址分类:

A类 首位以“0”开头的地址,1-8位为网络标识,0.0.0.0-127.0.0.0 为A类网络地址,后24位为主机标识,最多支持2^24-2 个主机(全0全1保留,16777214);

B类 前两位为“10”的地址。1-16为网络标识,128.0.0.0-191.255.0.0为B类网络地址,后16位为主机地址,最多支持2^16-2个主机(65534);

C类 前两位为“110”的地址。1-24为网络标识,192.0.0.0-223.255.255.0为C类网络地址,后8位为主机地址,最多支持2^8-2个主机(254);

D类 前两位为“1110”的地址。1-32为网络标识,224.0.0.0-239.255.255.255为C类网络地址,无主机标识,常用于多播。

全0全1保留原因:全0表示地址不可知,全1常用作广播地址。

广播地址:本地广播(本网络内广播),直接广播(不同网络之间广播)

IP多播:用于将包发送给特定组内的所有主机。多播可以穿透路由,广播不行。

IP多播与地址:多播使用D类地址。可用范围224.0.0.0 - 239.255.255.255,224.0.0.0 - 224.0.0.255的范围无需路由控制,同一链路内可以实现多播。此范围外设置多播地址会给全网所有组内成员发送多播的包(可以利用生存时间,TTL Time To Live,限制包的到达范围)。对于多播,所有除路由器以外的主机必须属于224.0.0.1的组,所有路由器必须属于224.0.0.2的组。利用IP多播实现通信除了地址外还需要IGMP等协议的支持。

子网掩码:区分网络标识和主机标识,比IP地址分类更加灵活。

全局地址与私有地址:全局地址需要在互联网范围内保持唯一,但是私有地址不需要,只需要在同一个域内保证唯一即可。

路由控制

路由控制表:记录网络地址与下一步应该发送至路由器的地址。

默认路由:路由表中任何一个地址都能与之匹配的记录。一般为0.0.0.0/0或default。

主机路由:IP地址/32。多用于不希望通过网络地址路由的情况。

环回路由:同一台计算机上程序之间进行网络通信时所使用的一个默认地址。127.0.0.1或者localhost。

路由汇总:可以有效减少路由表的条目。比如 192.168.2.0/24 和192.168.3.0/24 变为 192.168.2.0/23。

IP分割处理与再构成处理

数据链路不同,MTU则相异

IP报文的分片与重组:路由器分片,终端重组。缺点:加大路由器负担,丢包使整个数据报废。

路径MTU发现:PMTUD,路径中数据链路中最小的MTU。优化:减少分片

路径MTU发现工作原理:

首次发包禁止分片,路由器丢弃并返回ICMP不可达消息通知MTU信息,下次发包开始分片(UDP由IP层分片,TCP计算MSS最大段长度由自己分片)

IPv4首部

版本Version,首部长度IHL Internet Header Length,区分服务TOS Type Of Service, DSCP段与ECN段, 总长度, 标识, 标志, 片偏移, 生存时间, 协议, 首校验和, 源地址, 目标地址, 可选项, 填充, 数据

IPv6首部

版本, 通信量类, 流标号, 有效载荷长度, 下一个首部, 跳数限制, 源地址,目标地址

IPv6扩展首部

DNS

Domain Name System

ARP

Address Ressolution Protocol

RARP: Reverse Address Ressolution Protocol

ICMP

确认IP包是否成功送达目标地址。

两种:通知出错原因的错误消息,用于诊断的查询消息

DHCP

Dynamic Host Configuration  Protocol

NAT、IP隧道、IP多播、IP任播、通信质量控制、显式拥塞通知、Mobile IP


TCP与UDP

传输层的两个具有代表性的协议:TCP提供可靠的通信传输,UDP常用于让广播和细节控制交给应用的通信传输。

TCP:是面向连接的、可靠的流协议。TCP为提供可靠性传输,实行“顺序控制”或“重发机制”。此外还具备“流量控制”、“拥塞控制”、提高网络利用率等众多功能。(接收方连续不断,发10*100,收1000)

UDP:是不具备可靠性的数据报协议。(可以确保发送消息大小)不确保消息一定可达,因此应用有时会根据实际情况重发处理。

TCP与UDP的区别:TCP应用于需要可靠传输的场景,UDP主要用于对高速传输和实时性要求高的通信或广播通信。

UDP

UDP的特点及目的:User Datagram Protocol,无复杂的控制机制,简单高效。流控、丢包重发、乱序纠正均需应用程序处理。主要用于:

1. 包总量较少的通信(DNS、SNMP等)

2. 视频、音频等多媒体通信(即时通讯)

3. 限定于LAN等特定网络中的应用通信

4. 广播通信(广播、多播)

TCP

Transmission Control Protocol

TCP的特点及目的:TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠传输。

通过序列号与确认应答提高可靠性

发送方将发送的消息按字节编号,接收方收到消息返回ack,ack中携带下一步要接受的序号。发送方没收到ack则启动重发。

重发超时如何确定

重发超时时间稍大于RTT+偏差。

RTT:Round Trip Time, 指报文段的往返时间

偏差:RTT时间波动的值、方差。也叫抖动

如果重发之后还是无应答,那么重发是将将以2倍、4倍的指数函数延长。

重发一定次数后,强行关闭连接。

连接管理

三次握手和四次挥手

TCP以段为单位发送数据

MSS: Maximum Segment size 最大消息长度。MSS在三次握手时,取发送方和接收方中支持的较小值。

利用窗口控制提高速度

窗口内数据无需等待上一段的响应即可发出,设置缓存保存已发出的数据,数据发出后如果如期收到响应则不再重发并清除缓存,收到确认应答的情况下,窗口滑动到确认应答的序列号位置。

窗口控制与重发控制

窗口控制中,如果出现段丢失该如何处理?

应答未能返回。数据已到达对端,无需重发。

报文段丢失。接收端如果收到一个应接受序号以外的数据时,会针对当前为止收到的数据返回确认应答(会重复发还未收到的序号)。发送端如果连续3次收到同一个确认应答,会重发对应的数据。称为高速重发控制。

流控制

避免接收端处理不过来,导致数据丢失的情况。接收端会向发送端通知自己可以接收数据的大小,发送端会发送不超过该大小的数据,此限度为窗口大小。

TCP首部中专门有个字段通知窗口大小。接收端根据自身缓冲区情况填充该字段,发送端根据该字段调整发送窗口大小。

窗口探测包:接收端缓冲区满后,窗口大小置为0,发送端在过了重发超时时间后,发送一个窗口探测包,接收端返回响应,如果窗口大小仍为0,则继续等待。接收端缓冲区恢复可用后将给发送段发送一个窗口更新通知,为防止此通知丢失,业务无法继续,发送方会持续发送窗口探测包。

拥塞控制

慢启动:避免启动数据发送时,一次发送过多数据,导致网络拥堵或者瘫痪。定义了一个拥塞窗口的概念,慢启动时将拥塞窗口起始大小设置为1MSS(也可以多个MSS,根据实际情况确定),之后每收到一次ACK,拥塞窗口的值加1。在发送数据包时,将拥塞窗口的大小与接收主机通知的窗口大小做比较,取较小值,发送比其还要小的数据量。

慢启动阈值:随着包的往返,拥塞窗口增长也会越来越快,拥堵状况激增甚至导致网络拥塞的发生。因此当拥塞窗口的值超出慢启动阈值,在每收到一次ACK时,只允许以 (1MSS字节数/拥塞窗口字节数)*1MSS字节数 的比例放大拥塞窗口。

TCP通信开始时,没有设置相应的慢启动阈值。而是在超时重发时才会设置为当时拥塞窗口一半的大小。

由重复确认应答出发的高速重发控制与超时重发机制的处理有些不同。前者网络拥堵更轻。

由重复确认应答进行高速重发控制时,慢启动阈值设置为当时窗口大小的一半(严格说,是设置为实际已发送但未收到ACK的数据量的一半),处理完重复确认应答后,将窗口大小设置为慢启动阈值+3个数据段的大小。然后周而复始。

TCP通信开始后,网络吞吐量会逐渐上升,但是随着网络拥堵的发生吞吐量也会急速下降,然后再次进入缓慢上升的过程。

提高网络利用率的规范

Nagle算法:指发送端即使还有应该发送的数据,但是如果这部分数据很少的话,则进行延迟发送的一种处理条件。也就是仅在以下两个条件之一满足的情况下才进行数据发送:

1、已发送数据都已经收到确认应答时

2、可以发送最大段长度(MSS)的数据时

优点:网络利用率可以提高

缺点:存在某种程度上的延迟

在窗口系统或者机械控制领域使用TCP时,往往会关闭对该算法的启用。

延迟确认应答

原因:接收端如果每次都立刻回复ACK的话,可能会返回一个较小的窗口,因为刚接收完数据,缓冲区已满。发送端收到ACK后,会以较小的窗口发送数据,将降低网络利用率。因此要延迟确认应答。

详情:1、没有收到2x最大段长度数据为止不做确认应答(不同操作系统不同,有的也会收到两个包就返回确认,不论数据大小)

2、其他情况下,最大延迟0.5s发送确认应答(很多操作系统设置0.2s左右)

捎带应答

处理完请求,返回回执时顺带应答的方式。需启用延迟应答才能实现确认应答。提高网络利用率,降低计算机处理负荷。

其他传输层协议

UDP-Lite:Lightweight User Datagram Protocol 轻量级用户数据报协议,是扩展UDP机能的一种传输层协议。UDP中,如果校验和出现错误,所有的包将全部丢弃。有些应用不想全部丢弃,但是关闭校验和功能也不合适,因为有可能错误处在UDP首部端口号或者IP首部的IP地址,这将导致严重后果。

UDP-Lite提供与UDP几乎相同的功能,不过计算校验和的范围可以自由应用自行决定。

SCTP:Stream Control Transmission Protocol 流控制传输协议,与TCP一样,都是一种提供数据到达与否相关可靠性检查的传输层协议。主要特点如下:

1.以消息为单位收发

TCP中接收端并不知道发送端应用所决定的消息大小。在SCTP中可以。

2.支持多重宿主

在有多个network interface controller,NIC的主机中,即使其中能够使用的NIC发生变化,也仍然可以继续通信。

3.支持多数据通信

TCP中建立多个连接以后才能进行通信的效果,在SCTP中一个连接就可以。

4.可以定义消息的生存期限

超过生存期限的消息,不会被重发。

SCTP主要用于进行通信的应用之间发送众多较小消息的情况。这些较小的应用消息被称作数据块(Chunk),多个数据块组成一个数据包。

同时还具有支持多重宿主以及设定多个IP地址的特点,比如笔记本从以太网切换到WLAN时,TCP需要断开重连,SCTP就可以保证通信不中断。

DCCP:Datagram Congestion Control Protocol 数据报拥塞控制协议  是一个辅助UDP的崭新的传输层协议。

UDP没有拥塞控制机制,因此应用使用UDP发送大量数据包时极容易出现问题。互联网中的通信,即使使用UDP也要考虑拥塞控制,该机制很难融入协议中,于是出现了DCCP这样的规范。

DCCP特点如下:

1. 不可靠传输

2. 面向连接,具备建立与断开连接的处理。在建立和断开连接上具有可靠性。

3. 能够根据网络拥堵情况进行拥塞控制。两种方法:类似TCP拥塞控制和TCP友好升级控制。

4. 为了进行拥塞控制,接收端收到包后返回ACK。该确认应答将被用于重发与否的判断。

UDP首部格式

组成:源端口号,目标端口号,包长和数据校验和。

校验和计算用到了UDP首部和伪首部(源和目标IP地址+协议号),校验和生成及其原理可以扩展学习。

TCP首部格式

组成:源端口号,目标端口号,序列号,确认应答号,数据偏移,保留,控制位,窗口大小,校验和,紧急指针,选项,填充

控制位,选项内容丰富,可以深入了解。

窗口大小与吞吐量:Tmax = W/RTT

路由协议

静态路由与动态路由

自治系统与路由协议

IGP与EGP

路由算法

距离向量算法

Distance-Vector算法根据距离(代价)和方向决定目标网络或者目标主机位置的一种方法。

需要时间获取路由信息,极易发生路由循环问题。

链路状态算法

链路状态算法是路由器在了解网络整体连接状态的基础上生成路由控制表的一种方法。该方法中,每个路由器必须保持同样的信息才能进行正确的路由选择。

同步多个路由器信息需要消耗大量的内存和算力。

主要路由协议

RIP,RIP2,OSPF适用域内

BGP 适用对外连接

RIP

Routing Information Protocol 距离向量型的一种路由协议。

广播路由控制信息、根据距离向量确定路由、使用子网掩码时RIP的处理

RIP路由变更时的处理:

无限计数问题(1.最长距离不超过16,2.水平分割即不原路返回信息)

无法应对网络存在环路的情况,因此提出毒性逆转(断网主动发距离16的消息)、触发更新(断网即刻发消息,不等待30s)

RIP2

使用多播、支持子网掩码、路由选择域、外部路由标志、身份验证密钥

OSPF

Open Shortest Path First 一种链路状态型路由协议。

BGP

Border Gateway Protocol 边界网关协议。是一种路径向量协议。

MPLS

除了路由转发之外的转发IP数据包的方式。Multi Protocol Lable Switching 多协议标记交换技术

应用协议

TELNET, SSH, FTP

电子邮件

WWW

网络管理

SNMP

其他应用层协议


网络安全

网络安全构成要素

防火墙

IDS 入侵检测系统

反病毒/个人防火墙

加密技术基础

对称密码体制与公钥密码体制

身份认证技术

安全协议

IPsec与VPN

TLS/SSL与HTTPS

IEEE802.1X



你可能感兴趣的:(图解TCP/IP笔记)