基本概念
为什么会有TCP/IP协议
在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。只有把它们联合起来,电脑才会发挥出它最大的潜力。于是人们就想方设法的用电线把电脑连接到了一起。
但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息。因而他们需要定义一些共通的东西来进行交流,TCP/IP就是为此而生。TCP/IP不是一个协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等等。电脑有了这些,就好像学会了外语一样,就可以和其他的计算机终端做自由的交流了。
TCP/IP协议栈
TCP/IP标准模型是四层。而对等模型是五层。
- 应用层-----用来接收用户数据,人机交互接口
- 表示层-----将逻辑语言转换为机器语言
- 会话层-----针对传输的每一种数据建立一条独立的通道。数据的整合
- 传输层-----区分流量信息,定义数据传输方式。TCP协议、UDP协议
- 网络层-----通过IP地址进行逻辑寻址,IP协议
- 数据链路层-----逻辑链路控制层(LLC);介质访问控制层(MAC)
- 物理层----定义物理特性
一些基本的常识
- 互联网地址(ip地址)
网络上每一个节点都必须有一个独立的Internet地址(也叫做IP地址)。现在,通常使用的IP地址是一个32bit的数字,也就是我们常说的IPv4标准,这32bit的数字分成四组,也就是常见的255.255.255.255的样式。IPv4标准上,地址被分为五类,我们常用的是B类地址。具体的分类请参考其他文档。需要注意的是IP地址是网络号+主机号的组合,这非常重要。
- 域名系统
域名系统是一个分布的数据库,它提供将主机名(就是网址啦)转换成IP地址的服务。
- RFC
RFC是什么?RFC就是tcp/ip协议的标准文档,在这里我们可以看到RFC那长长的定义列表,现在它一共有4000多个协议的定义,当然,我们所要学习的,也就是那么十几个协议而已。
- 端口号(port)
注意,这个号码是用在TCP,UDP上的一个逻辑号码,并不是一个硬件端口,我们平时说把某某端口封掉了,也只是在IP层次把带有这个号码的IP包给过滤掉了而已。
- 应用编程接口
现在常用的编程接口有socket和TLI。而前面的有时候也叫做“Berkeley socket”,可见Berkeley对于网络的发展有多大的贡献。
物理层
-
同轴电缆
-
双绞线
-
光纤
- 单工
- 半双工
- 全双工
数据链路层
数据链路层有三个目的:
- 为IP模块发送和 接收IP数据报。
- 为ARP模块发送ARP请求和接收ARP应答。
- 为RARP发送RARP请 求和接收RARP应答
(ARP叫做地址解析协议,是用IP地址换MAC地址的一种协议,而RARP则叫做逆地址解析协议)
主要介绍以太网和IEEE 802封装。
首先,以太网是私有技术,IEEE 802.3标准是公有技术。
-
前 24 位:表示厂商 ID ;由 IEEE 组织进行全球分配
-
后 24 位:表示产品 ID数据帧由网络层产生的数据包,被下发给数据链路层后,分别会在数据包的头部和尾部添加上封装信息。封装后的数据被称为数据帧。
- 以太网Ⅱ
- IEEE802.3标准
数据帧发送方式
- 单播
- 组播
- 广播
网络层
IPv4 地址的 有类分址 。A\B\C 三类被称为单播地址,如果源和目的均为单播地址的数据包,则被称为是单播报文。特殊地址0.0.0.0----> 代表没有 IP 或者代表所有设备127.X.X.X---> 本地测试地址 ---127.0.0.1 (代表自身)网段地址 ---> 主机位全 0 的地址 --- 网络地址192.168.1.0/24广播地址 --->255.255.255.255定向广播地址--->192.168.1.255---> 主机位全 1私有地址A:10.0.0.0/8--10.0.0.0-10.255.255.255B:172.16.0.0---172.31.255.255--- 共 16 个 B 类地址段C:192.168.0.0-192.168.255.255--- 共 256 个 C 类地址段版本 -- 恒定为 4生存时间 ---Time to Live---TTL 数值 --> 这个数据包可以在网络中存活的时间每经过一台路由器,TTL 数值减 1 ,当某台路由器在收到 IP 报文后,发现 TTL 数值为 0 ,则直接丢弃该报文。协议字段 --- 指代上层协议(可以是传输层、也可以是应用层)TCP---6UDP---17标记字段 --- 用于数据包的排序以及判断是否完整接收数据信息。标志位 ---3bit ,恒定 0 ; DF 位 -- 该标记位为 1 ,则代表该报文没有被分片。 MF 位 -- 为 0 则代表是最后一个报 文,为1 则代表后续还有其他报文。片偏移 -- 用来记录每一个分片的原始位置IP 分片MTU--- 最大传输单元 ---- 在以太网当中为 1500 字节 ---- 设备双方通过协商得出 MTU 数值后,则在链路中 传输的报文的最大字节为MTU 数值。传输层
端口号 --- 用来区分计算机上不同应用程序的;标识不同的进程。端口号总共是 2 字节大小。0-65535--->1-65535静态端口(著名端口) ---1-1023---- 网络中常用协议的固定端口动态端口 ----1024-65535---> 某些协议或程序自行生成的端口TCP 协议 ----- 传输控制协议一种 面向连接 的 可靠 传输协议。TCP 协议建立的连接是双向连接 。面向连接:在数据传输之前,收发双方需要预先建立一条逻辑通路。无面向连接。序列号确认序列号6 位标志位SYN--- 同步位 --- 是在 TCP 三次握手建立通道时的标记ACK--- 确认位 --- 当该标记位置为 1 时,确认序列号有意义FIN--- 代表释放 TCP 连接TCP 分段:因为 IP 分片后, TCP 协议无法保证数据的可靠性传输;故而使用 TCP 协议进行封装的文件不允许进行 IP 分片,而又因为 MTU 存在,需要将大文件分为小文件,该操作由 TCP 协议完成。MSS--- 最大传输段 ===MTU-IP 头部 -TCP 头部在 TCP 协议中,每一个报文都需要有序列号信息 。可靠性- 确认机制----每收到一个TCP数据段,都需要发送一次确认报文。
- 流控机制(滑动窗口机制):可以通过调节窗口大小(Windows)来对流量进行控制
- 重传机制----超时重传,当一个数据段中的某个报文丢失,发送端会主动重新发送一次该报文。
- 排序机制----传输数据段时,被分为多个报文,从不同路径传输,最终达到目的地的顺序会被打乱, 需要根据序列号字段进行重新排序。
TCP 连接建立过程中要解决的三个问题
- 要使每一方能够确知对方的存在。
- 要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等)。
- 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。
- TCP 连接的建立采用客户服务器方式。
- 主动发起连接建立的应用进程叫做客户
-
被动等待连接建立的应用进程叫做服务器
TCP的连接建立- TCP建立连接的过程叫做握手
- 采用三次握手:在客户和服务器之间交换三个TCP报文段,以防止已失效的连接请求报文段突然又传送到了,因而产生TCP连接建立错误
TCP的连接释放- TCP连接释放过程比较复杂。
- 数据传输结束后,通信的双方都可释放连接。
- TCP连接释放过程是四次挥手
MSL---120S ,指一个数据包在网络中传递的最大时间。
-