TCP/IP基础知识汇总

网络基础(持续更新)

网络协议分层模型

OSI 参考模型 与 TCP/IP 协议

OSI 参考模型(7层)

应用层

表示层

会话层

传输层

网络层

数据链路层

物理层

TCP/IP 协议 (4层)

应用层

传输层

网络层

数据链路层

术语

包:通用型术语;

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

报文:网络层IP包的单位;

段:TCP 传输层中包的单位;

RFC 文档

一个协议的标准化一定要通过IETF 讨论

RFC 文档官网:https://www.rfc-editor.org

数据链路

MTU 最大传输单元,单位字节;以太网的默认MTU为 1500字节;

每条数据链路的MTU值可能是不一样的。

MAC地址

MAC是网络中用来标识网卡设备的唯一物理地址。

MAC 地址为6个字节长度,通常这样表示:d0-76-e7-75-95-6d

以太网

以太网帧格式

一个数据帧所能容纳的最大数据范围是46-1500个字节。

无线通信

IP 协议

IP (Internet Protocol)即网际协议

数据链路层提供两个直连设备之间的通信功能。与之相比,网络层的IP协议则负责没有直连的两个网络之间进行通信。

IP协议三个作用:

  • IP寻址
  • 路由
  • IP分包与组包

IP地址

​ IPv4 地址由32位正整数来表示。IP地址在计算机内部以二进制的方式处理,人们则通过十进制点符号的形式查看IP地址,也就是将32位的IP地址以每8位分为一组,共4组,每组之间以点号隔开。

如:192.168.86.1

​ IP地址由网络地址主机地址两部分组成。我们平时所说的同一网段就是网络号相同的IP地址。

IP包被转发到途中某个路由器时,正是利用目标IP地址的网路地址进行路由。因为仅凭网络标识就能判断出是否为该网段内的主机。

网络地址和主机地址的划分:

​ 从第几位开始到第几位算网络地址?又从第几位开始到第几位算主机标识?目前有两种类型:

  • 以分类进行划分;(A类、B类、C类、D类)
  • 以子网掩码进行划分;(更普遍)

IP地址分类

根据网络规模的大小,将IP地址分为 A、B、C、D、E 五类。A B C 三类为常用地址,D E 类为特殊地址。

根据IP地址的第一个字节,可以判断IP地址的分类。

类别 最大网络数 IP地址范围 单个网段最大主机数 私有IP地址范围
A 126(2^7^ -2) 1.0.0.1-127.255.255.254 16777214 10.0.0.0 - 10.255.255.255
B 16384(2^14^) 128.0.0.0-191.255.255.255 65534 172.16.0.0 - 172.31.255.255
C 2097152(2^21^) 192.0.0.0-223.255.255.255 254 192.168.0.0 - 192.168.255.255

A类地址中,前8位表示网络号,后24位表示主机号(默认子网掩码:255.0.0.0),网络号最高的位必须是 0;

B类地址中,前16位表示网络号,后16位表示主机号(默认子网掩码:255.255.0.0),网络号最高的位必须是 10;

C类地址中,前24位表示网络号,后8位表示主机号(默认子网掩码:255.255.255.0),网络号最高的位必须是 110;

公有地址和私有地址

​ 3类IP地址中,各自保留了一段区域作为私有地址。公有地址由 Internet 信息中心进行分配和注册;私有地址不能注册,专门为组织机构内部使用。其地址范围如下:

类别 IP地址范围 私有IP地址范围
A 1.0.0.1-127.255.255.254 10.0.0.0 - 10.255.255.255
B 128.0.0.0-191.255.255.255 172.16.0.0 - 172.31.255.255
C 192.0.0.0-223.255.255.255 192.168.0.0 - 192.168.255.255

子网和子网掩码

子网掩码

​ 直接使用A类、B类、C类、IP地址太浪费资源,引入子网掩码后,从逻辑上把一个大网络划分为一些小网络(子网)。一个IP地址可以不再受限于自己的类别,而是通过子网掩码自由的定义网络标识的长度。

​ 子网掩码和IP地址一样共32位,左边一段连续的1表示网络号的长度,右边一段连续的0表示主机号的长度。子网掩码用来指明一个IP地址的哪些位是网络号,子网掩码不能单独使用,必须结合IP地址一起使用,子网掩码与IP地址做 “与” 运算得出IP地址的网络号是多少。

​ 至此,一个IP地址就有了两个识别码:IP地址本身和子网掩码。

例子:

​ IPv4 地址: 192.168.1.111,子网掩码 : 255.255.255.0 ,表示前24位表示网络号,后8位表示主机号;也可以用 192.168.1.111/24 表示。

网关

前面说到子网掩码把一个网络划分为多个子网,同一网段的两个主机属于同一个子网。不同子网的两个主机如果需要通信,就需要网关。

网关实质上是一个网络通向其他网路的IP地址,IP就是该网段内可用IP的其中一个,通常是第一个或最后一个;

网关设备是用来连接两个不同网络的设备。

路由控制

IP地址的网络地址部分用于路由控制,

IP路由表

IP协议始终认为路由表是正确的,路由控制表中记录着网络地址与下一步应该发送至路由器的地址。

本机上使用 netstat -r 命令查看路由表

IP报文的分片与重组

太网的默认MTU为 1500字节,因此发送4500字节的IP数据报文是无法在一帧中传输完成的,因此必须将IP报文分片发送。

MTU路径发现

IPv6

​ IPv6 采用128位(16个字节)表示,可以彻底解决IPv4 地址不足的问题。IPv6 地址一般采用十六进制表示法,2个字节为一组(8个十六进制表示),每组之间用英文冒号隔开,如 fe80:0000:0000:ec96:139c:c5d4:95fb:deed

IP协议相关技术

DNS

域名解析系统

将域名解析为IP地址

使用 nslookup 命令可以查看域名对应的IP地址:

> nslookup www.baidu.com
服务器:  192.168.1.1
Address:  192.168.1.1

非权威应答:
名称:    www.baidu.com
Addresses:  110.242.68.4
          110.242.68.3

ARP 与 RARP

ARP (Address Pesolution Protocol)地址解析协议:根据IP地址查找对应的MAC地址

RARP:将MAC地址解析为IP地址

ARP 通过ARP请求和ARP响应两种类型的包来确定MAC地址的。

ARP缓存表:

​ 缓存了IP地址与MAC地址的对应关系。 可通过 arp -a 命令查看ARP表。

> arp -a

接口: 192.168.98.1 --- 0x6
  Internet 地址         物理地址              类型
  192.168.98.254        00-50-56-e6-8f-f8     动态
  192.168.98.255        ff-ff-ff-ff-ff-ff     静态
  224.0.0.22            01-00-5e-00-00-16     静态
  224.0.0.251           01-00-5e-00-00-fb     静态
  239.11.20.1           01-00-5e-0b-14-01     静态
  239.255.255.250       01-00-5e-7f-ff-fa     静态
  255.255.255.255       ff-ff-ff-ff-ff-ff     静态

接口: 192.168.86.1 --- 0xa
  Internet 地址         物理地址              类型
  192.168.86.254        00-50-56-e2-e7-78     动态
  192.168.86.255        ff-ff-ff-ff-ff-ff     静态
  224.0.0.22            01-00-5e-00-00-16     静态
  224.0.1.60            01-00-5e-00-01-3c     静态
  239.11.20.1           01-00-5e-0b-14-01     静态
  239.255.255.250       01-00-5e-7f-ff-fa     静态
  255.255.255.255       ff-ff-ff-ff-ff-ff     静态
  

ICMP

辅助的 ICMP(Internet Control Message Protocol)

ICMP消息

注:网络上常用的Ping 命令,就是通过ICMP实现的。

TTL字段

​ TTL(Time To Live)是IPv4报头的一个8bit字段,该字段指定IP数据包被路由器丢弃之前允许通过的最大网段数量,从而限制IP数据包在计算机网络中的生存时间,TTL最大值是255;

DHCP

动态主机配置协议

用于动态分配IP地址

NAT

NAT(NetWork Address Translator)网络地址转换协议,用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术。

NAT实际上是为正在面临地址枯竭的IPv4而开发的技术。不过在IPv6中为了提高网络安全也在使用NAT。

除了转换IP地址,还有可以转换TCP、UDP端口号的 NAPT(NetWork Address Port Translator)技术。

注:通常人们提到的NAT,其实就是NAPT。

NAT 工作机制:

​ 10.0.0.10 的主机与 163.221.120.9 的主机进行通信,利用NAT技术,途中的路由器将发送源地址从 10.0.0.10 转换为全局的IP地址 202.244.174.37 再发送数据。反之,当包从地址 163.221.120.9 发过来时,目标地址202.244.174.37 先别转换成私有地址 10.0.0.10 以后再进行转发。

​ 在NAT路由器的内部,有一张自动生成的用来转换地址的表。

NAT 潜在问题

​ 无法从NAT的外部向内部服务器建立连接。

​ 转换表的生成与转换操作都会产生一定的开销。

​ 通信过程中一旦NAT 遇到异常需要重启时,所有的TCP 连接都将被重置。

NAT 穿越技术

TCP 与 UDP

传输层协议

端口号

IP地址中的网络地址用于标识

TCP

TCP(Transmission Control Protocol)传输控制协议,从名字可以知道TCP协议在传输时加入控制逻辑,以保证数据传输是可靠的。

可靠性

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

​ 当主机A发送1000字节给主机B时,会告诉主机B自己发送的数据序号为 1-1000,主机B接收数据后,给主机A发送 ACK 确认应答,告诉主机A自己已经接收到,并且希望下一次接收的数据包的序号为1001,每发送一次数据,都会有一次应答。

​ 如果主机A在发送完数据后,没有接收到确认应答,则会在超时时间后重复发送数据包,以保证即便数据包丢失,也能实现可靠性传输。(接收不到确认应答有两种情况:第一种是主机B确实没有收到数据,数据包在发送的途中丢失;第二种是主机B已经收到数据,返回的确认应答丢失)

注:为什么会有序列号和确认应答号,试想下上面说的第二种情况:主机B已经收到数据,返回的确认应答丢失,此时主机A进行超时重发,主机B就会收到重复的数据包,所以必须有个序列号来标识数据包达到去重的目的。确认应答号是主机B回应主机A下一次期望接收的数据包。

连接管理

三次握手、四次挥手

一个连接的建立和断开,至少需要来回发送7个包才能完成。

以段位单位发送数据

利用窗口提高速度

​ 每发送一次数据,都要等待一次应答才继续发送下一条数据,这样的策略有个缺点,那就是包的返回时间越长,通信性能就越低。

为此,TCP引入窗口这个概念来解决这个问题。

窗口的大小是指无需等待确认应答就可以继续发送数据的最大值。

​ 发送端主机需要设置缓存保留这些待被重传的数据,直到收到他们的确认应答。

滑动窗口机制

​ 收到确认应答后,将窗口滑动到确认应答中的序列号位置。这样可以顺序地将多个段同时发送以提高通信性能。这种机制也被称为滑动窗口机制。

窗口控制和重发机制

部分确认应答丢失也无需重发数据:

​ 使用窗口,如果1-1000的确认应答中途丢失,而1001-2000的确认应答被发送端接收到,则发送端认为2000 之前的数据都已经成功接收了,所以 1-1000的数据无需重新发送。

高速重发机制:

​ 发送端主机如果连续3次收到同一个确认应答,就会将对应的数据重新发送,这种机制比之前的超时发送更加高效,因此也叫高速重发机制。

UDP

UDP 是面向无连接的通信协议,UDP没有复杂的控制,换句话说,如果想在应用层加入自定义的控制逻辑,选择UDP协议是个不错的选择。

Socket API

Socket 是操作系统提供的API,用于实现应用的数据发送和接收。

应用层协议

远程登录

Telnet 非加密

SSH 加密的远程登录系统

文件传输

FTP

SFTP(SSH)

电子邮件

SMTP

POP

超文本传输

HTTP

CSS

JavaScript

静态资源

网络安全

防火墙

入侵检测系统

加密技术

README

参考:

​ 《图解TCP/IP》第五版

2018-05-12 米开


TCP/IP基础知识汇总
http://jackpot-lang.online/2018/05/12/计算机基础/网络基础知识汇总/
作者
Jackpot
发布于
2018年5月12日
许可协议