赞
踩
1、域名系统:DNS 系统是一个分布式数据库,它提供了 IP 地址(115.239.211.112
)和主机名(www.baidu.com
)之间的映射信息;
2、封装:
tcp segement = header(20 bytes) + application data
ip packet = header(20 bytes) + tcp segement
ethernet frame = header(14 bytes ) + ip packet
3、RFC(Request for Comments):所有关于 Internet 的正式标准都以 RFC 文档出版
协议就是模型,就是规范,是针对某一特定问题域而设计的方案。要想学习业务建模,模型设计,RFC 文档是最佳典范!
4、端口:端口号用来标识互相通信的应用程序,服务器使用知名的端口号,而客户端使用临时设定的端口号。
5、ARP 和 RARP:
6、在各协议的报文格式中,标识
可以理解为 id,标志
一般是 bit 位,用作功能掩码;
7、tcpdump 与 BPF: BSD Packet Filter,分组过滤器
tcpdump 用它来截获和过滤来自一个被置为混杂模式的网络接口卡的分组。
8、计算机时钟
9、FTP:文件传送协议
10、NFS:网络文件系统
11、X 窗口系统,简称为 X:
1、链路层的三个目的:
2、链路层协议取决于网络所使用的硬件,如以太网、令牌环网、FDDI,RS-232串行线路等;
3、MTU
串行线路选择 MTU
4、CSMA/CD:冲突检测的载波侦听多路接入;
5、以太网封装:RFC 894
6、CRC
循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或电脑文件等数据产生简短固定位数
校验码的一种散列函数,它是利用除法及余数的原理来作错误侦测的。对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
通常直接通过硬件生成!
7、最大传输单元 MTU
不同类型的网络,MTU 也不同,以太网的 MTU 为 1500!当 IP Packet 长度超过 MTU 时,要进行分片(fragmentation)。
8、路径 MTU
9、MTU 与线路利用率
MTU 越大,线路利用率越小,因为传输过程中存储各层协议控制信息的协议头长度是固定的。比如 TCP 和 IP 首部都占用 20 个字节。
IP 协议不可靠、无连接的设计理念,很有启发意义!
1、不可靠:当发生错误时,路由器会丢弃数据报,然后发送 ICMP 消息报给信源,仅此而已!
2、无连接:相同连接上的不同 IP 数据报,独立路由,无序接收。
3、IP 数据报的格式
ip 报文头中的内容大致可分为
header length
= field
* 4 (byte
), max(field)
=
2
4
2^4
24 - 1 = 15,因此首部最长为 60 个字节,通常该 field 的值为 5,首部长度为 20 字节。4、路由表:目的 IP 地址,吓一跳路由器的 IP 地址,标志,网络接口
5、常用工具
ifconfig
netstat
route
traceroute
…
6、ARP:地址解析协议
使用数据链路的任何网络层都需要遵循数据链路层的寻址机制(基于 MAC)!
ARP:为 ip 地址到对应的硬件地址之间提供动态映射,该过程是自动完成的,一般应用程用户或系统管理员不必关心。
7、ARP 高速缓存: 使用 arp -a
可以查看,每一项的生存时间一般为 20 分钟。
8、RARP 协议:逆地址解析协议
具有本地磁盘的系统引导时,一般是从磁盘上的配置文件(/etc/sysconfig/network-scripts/ )中读取 IP 地址。但是无盘机,则需要采用其他方法来获取 IP 地址。
9、IP 分片
IP 层在发送 IP 数据报之前,先检测连接的路径 MTU,当 IP 数据报长度大于 MTU 时,进行分片。分片可能发生在源主机上,也可能发生在中间路由器上。
分片的重新组装由目的主机的 IP 层负责完成。
1、icmp
功能分类:查询,差错
2、功能分为两类:查询,差错
3、有些情况不会导致产生 ICMP 差错报文,以防止广播风暴。
4、ping
ping 的目的是为了测试另一台主机是否可达,该程序发送一份 ICMP 回显请求
(type = 8)报文到目的主机,并等待目的主机返回 ICMP 回显应答
。ping 程序还能测出到这台主机的往返时间。
随着 Internet 安全意识的增强,出现了提供访问控制清单的路由器和防火墙,一台主机的可达性可能不仅仅取决于网络层是否可达,还取决于承载的协议类型(TCP? UDP ? ICMP?)及端口号。
5、traceroute
traceroute 程序可以让我们看到 IP 数据报从一台主机传到另一台主机所经历的路由过程;Traceroute 程序通常会使用 IP 源路由选项(IP 报文头中的可选字段,最多只能放 9 个 ip 地址)。
traceroute 程序使用 ICMP 报文和 IP 首部中的 TTL 字段。
6、IP 路由
IP 路由是实现 TCP/IP 协议的系统(主机或路由器)最基本的功能;路由表项的内容很简单,包括 5 bit 标志,目的 IP 地址(主机、网络、或默认),下一站路由器的 IP 地址。
路由表可以被路由守护程序或 ICMP 重定向报文修改。
UDP 是一个简单的面向数据报的传输层协议。
1、UDP 首部
2、DNS 主要使用 UDP,其他还有 TFTP,SNMP,RIP,BOOTP 等
1、域名系统(DNS)是一种分布式数据库,它提供主机名字和 IP 地址之间的转换;
2、RFC 1034 说明了 DNS 的概念和功能,RFC 1035 详细说明了DNS 的规范和实现。 DNS 最常用的版本包括解析器和名字服务器)是 BIND(伯克利 Internet 域名服务器)。该服务器称作 named。
3、报文格式
4、DNS名字服务器无论是使用 UDP 还是 TCP,端口号都是 53.
TCP 层(传输层)将用户数据(应用层数据)打包成 TCP Segment (报文段),发送给 IP 层并启动一个定时器,另一端对收到的数据进行确认,对失序的数据重新排序,丢弃重复数据;TCP 提供端到端的流量控制,和强制性的端到端检验和。
1、 面向连接:tcp 连接是虚拟连接,而电话连接是物理连接;
2、TCP 首部的格式
3、6 个标志位
4、MSS
最长见的可选字段,称为 MSS(Maximum Segment Size),通常在连接建立的第一个报文段中指明这个选项,连接的双方都要通告各自的 MSS。
5、建立与终止连接
有关 TCP 报文的确认机制,很有意思,也很值得琢磨:
6、TCP 的半关闭
TCP 连接是全双工连接,即
当通道1完成数据发送,可以通过发送一个 FIN 来终止该通道;这个时候,TCP 连接处于半关闭状态;通道2依然有效,B 端仍然可以用通道2来发送数据,但是不能再用它接收数据了。
在网络编程中,如果应用程序不是调用 close 而是调用 shutdown,且第 2 个参数值为 1,则 socket 的 api 支持半关闭。多数情况下,应用程序应该调用 close 终止两个方向的连接。
有些特殊情况,比如客户端已经完成了它的数据发送,但仍要接收来自服务器的数据,这个时候连接只需要维持在一个单工状态就可以了,TCP 的半关闭设计能很好的解决这个问题。当然,也可以用其它方式,比如通过两个 TCP 连接来实现,但有时用半关闭的单连接更好。
7、建立连接的超时
有很多因素会导致建立连接超时,比如网络阻塞,这时需要有超时处理机制。比如,当发送第一个 SYN 后,如果没有收到 ACK 消息,5.8 秒后发送第二条 SYN,然后隔 24 秒发送第三条 SYN。
大多数伯克利系统把建立新连接所需的最长时间限制为 75 秒。
8、TCP 的状态迁移
上图中总共 11 个状态名,基本与 netstat 命令显示的状态名称一致,符合 RFC 793 中的定义!
TCP 连接建立和连接终止的过程中,客户端与服务器端的状态迁移路线是不同的。
对应的流程图:
9、TIME_WAIT 状态
TIME_WAIT 状态也称为 2MSL(Maximum Segement Lifetime) 等待状态。MSL 就是报文段被丢弃前在网络中存在的最大时间。RFC 793 指定 MSL 为 2 风中,实际常用值为 30 秒,1 分钟,或 2 分钟。
处理原则:
当 TCP 执行一个主动关闭,并发回最后一个 ACK,该连接必须在 TIME_WAIT 状态停留 2MSL 时长,这样可以让 TCP 再次发送最后的 ACK 以防止这个 ACK 丢失(另一端超时并重发最后的 FIN)。
处于 TIME_WAIT 的端口不能被使用! 在某些情况,使用 socket api 时,可以设置 SO_REUSEAADR 选项,让调用者对处于 2MSL 等待状态的端口进行赋值。
客户端执行主动关闭并进入 TIME_WAIT 是正常的,服务器端通常执行被动关闭,不会进入 TIME_WAIT 状态。如果终止一个已经建立连接的服务器程序,并立即重启服务器程序,服务器端口将会在 2MSL 时间内不可用,所以服务器程序一般都要设置 SO_REUSEAADR 选项。
当设置 SO_REUSEAADR 选项后,尽管端口可用了,但是那个特定的 socket 资源仍然处于 2MSL 等待状态,无法重用!!!
10、平静时间的概念
TCP 在重启后的 MSL 秒内不能建立任何连接,主要是为了防止接收上次连接的垃圾数据。
11、FIN_WAIT_2
为了防止连接在 FIN_WAIT_2 状态无限等待,当连接处于半关闭状态时,设置一个定时器,如果这个连接空闲(没收到应用层传来的数据) 10 分钟 75 秒,TCP 将进入 CLOSED 状态。
12、RST
当报文段发往基准的连接出现错误时,TCP 都会发送一个复位报文段。
13、同时打开,同时关闭
14、Nagle 算法
对于一些小的报文段,接收方使用经受时延的确认
方法来判断 确认
报文是否可以推迟发送,以便与回送数据(PSH 报文
一起发送。在较慢的广域网环境中,通常使用 Nagle 算法来减少这些小报文段的数目。这个算法限制发送者任何时候只能有一个发送的小报文段未被确认
。有时需要禁止 Nagle 算法的功能。
15、数据流的类型:交互式数据流,成块数据流
16、滑动窗口协议:流量控制方法
该协议允许发送方在停止并等待确认前可以连续发送多个分组,由于发送方不必每发送一个分组就停下来等待确认,因此该协议可以加速数据的传输。
使用 TCP 的滑动窗口协议时,接收方不必确认每一个收到的分组。
1、被管设备:路由器,X 终端,终端服务器,打印机等运行 TCP/IP 协议的设备。
2、MIB(Management Information Base):管理信息库,包含所有代理进程的所有可被查询和修改的参数;
3、SMI(Structure of Management Information):管理信息结构,关于 MIB 的一套公用的结构和表示符号。
4、SNMP(Simple Network Management Protocol):管理进程和代理进程之间的通信协议,包括数据报交换的格式等,一般传输层使用 UDP。
5、SNMP 的五种操作: get-request, get-next-request, set-request, get-response, trap
SNMP 报文的格式
6、对象标识符
7、信息管理库
8、ASN.1 与 BER
SNMP 报文的编码采用 ASN.1(Abstract Syntax Notation One) 和 BER(Basic Encoding Rule),BER是一种编码规格说明,描述如何将 ASN.1 类型的值编码成字节串(string of octets)的方法。BER 的数据都由三个域构成:标识域(tag)+长度域(length)+值域(value),简称 TLV 格式。在ASN.1中,也称为Identifier-length-content(ILC)。
ASN.1 可以简单的理解为模型定义语言,类似于 XML schema,JSON schema,SQL ( DDL ) 等。
例如:
Report ::= SEQUENCE {
author OCTET STRING,
title OCTET STRING,
body OCTET STRING,
biblio Bibliography
}
当数据模型定义好了之后,SNMP 使用 BER 将特定类型的数据编码为要传送的比特流。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。