首页 > 代码库 > Linux网络基础番外篇(IP、MAC、TCP)
Linux网络基础番外篇(IP、MAC、TCP)
linux网络管理
计算机网络
MAC
MAC(Media Access Control或者Medium Access Control)地址,意译为媒体访问控制、介质访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC地址。因此一个主机会有一个MAC地址,而每个网络位置会有一个专属于它的IP地址。
MAC地址(MAC Address)
MAC(Medium/Media Access Control)地址,用来表示互联网上每一个站点的标识符,采用十六进制数表示,共六个字节(48位二进制数)。其中,前三个字节(24位二进制数)是由IEEE的注册管理机构RA负责给不同厂家分配的代码(高位24位),也称为“编制上唯一的标识符”(Organizationally Unique Identifier),后三个字节(低位24位二进制数)由各厂家自行指派给生产的适配器接口,称为扩展标识符(唯一性)。一个地址块可以生成224个不同的地址。MAC地址实际上就是适配器地址或适配器标识符EUI-48。
MAC地址是网卡决定的,是固定的。
用六个字节的十六进制数表示
MAC地址对应于OSI参考模型的第二层数据链路层,工作在数据链路层的交换机维护着计算机MAC地址和自身端口的数据库,交换机根据收到的数据帧中的“目的MAC地址”字段来转发数据帧。
在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一定是全球唯一的。形象地说,MAC地址就如同我们身份证上的身份证号码,具有全球唯一性。
谈起MAC地址,不得不说一下IP地址。IP地址工作在OSI参考模型的第三层网络层。两者之间分工明确,默契合作,完成通信过程。IP地址专注于网络层,将数据包从一个网络转发到另外一个网络;而MAC地址专注于数据链路层,将一个数据帧从一个节点传送到相同链路的另一个节点。
IP地址
IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。
IP地址(英语:Internet Protocol Address)是一种在Internet上的给主机编址的方式,也称为网际协议地址。常见的IP地址,分为IPv4(32位)与IPv6(128位)两大类。IPV4就是有4段数字,每一段最大不超过255。由于互联网的蓬勃发展,IP位址的需求量愈来愈大,使得IP位址的发放愈趋严格,各项资料显示全球IPv4位址可能在2005至2010年间全部发完(实际情况是在2011年2月3日IPv4位地址分配完毕)。
地址空间的不足必将妨碍互联网的进一步发展。为了扩大地址空间,拟通过IPv6(128位)重新定义地址空间。IPv6采用128位地址长度。在IPv6的设计过程中除了一劳永逸地解决了地址短缺问题以外,还考虑了在IPv4中解决不好的其它问题。
IP地址转换
Internet上的每台主机(Host)都有一个唯一的IP地址。IP协议就是使用这个地址在主机之间传递信息,这是Internet 能够运行的基础。IP地址的长度为32位(共有2^32个IP地址),分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开。例如159.226.1.1。IP地址可以视为网络标识号码与主机标识号码两部分,因此IP地址可分两部分组成,一部分为网络地址,另一部分为主机地址。
网络地址:用于识别主机所在的网络
主机地址:用于识别该网络中的主机。
地址格式为:IP地址=网络地址+主机地址或IP地址=网络地址+子网地址+主机地址。
网络地址的位数直接决定了可以分配的网络数(计算方法:2^网络号位数-2);主机地址的位数则决定了网络中最大的主机数(计算方法:2^主机号位数-2)。
IP地址类型
公有地址
公有地址(Public address)由Inter NIC(Internet Network Information Center因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。
私有地址
私有地址(Private address)属于非注册地址,专门为组织机构内部使用。
以下列出留用的内部私有地址
IP地址分类
IP地址编址方案:IP地址编址方案将IP地址空间划分为A、B、C、D、E五类,其中A、B、C是基本类,D、E类作为多播和保留使用。
Internet委员会定义了5种IP地址类型以适合不同容量的网络,即A类~E类。它们适用的类型分别为:大型网络;中型网络;小型网络;多目地址;备用。常用的是B和C两类。
其中A、B、C3类(如下表格)由InternetNIC在全球范围内统一分配,D、E类为特殊地址。
A、B、C三类IP地址的特征:当将IP地址写成二进制形式时,A类地址的第一位总是0,B类地址的前两位总是10,C类地址的前三位总是110。
A类IP地址
一个A类IP地址是指, 在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为8位,主机标识的长度为24位,A类网络地址数量较少,有126个网络,每个网络可以容纳主机数达1600多万台。
A类IP地址 地址范围1.0.0.0到127.255.255.255(二进制表示为:00000001 00000000 00000000 00000000 - 01111110 11111111 11111111 11111111)。最后一个是广播地址。
A类IP地址的子网掩码为255.0.0.0,每个网络支持的最大主机数为256的3次方-2=16777214台。
A类地址总结 :
(1)A类地址第1字节为网络地址,其它3个字节为主机地址。它的第1个字节的第一位固定为0.
(2)A类地址网络号范围:1.0.0.0---126.0.0.0
(3)A类地址中的私有地址和保留地址:
① 10.X.X.X是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。范围(10.0.0.0---10.255.255.255)
② 127.X.X.X是保留地址,用做循环测试用的。
B类IP地址
一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码。如果用二进制表示IP地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络的标识长度为16位,主机标识的长度为16位,B类网络地址适用于中等规模的网络,有16384个网络,每个网络所能容纳的计算机数为6万多台。
B类IP地址地址范围128.0.0.0-191.255.255.255(二进制表示为:10000000 00000000 00000000 00000000----10111111 11111111 11111111 11111111)。 最后一个是广播地址。
B类IP地址的子网掩码为255.255.0.0,每个网络支持的最大主机数为256的2次方-2=65534台。
B类地址总结:
(1) B类地址第1字节和第2字节为网络地址,其它2个字节为主机地址。它的第1个字节的前两位固定为10.
(2) B类地址网络号范围:128.0.0.0---191.255.0.0。
(3) B类地址的私有地址和保留地址
① 172.16.0.0---172.31.255.255是私有地址
② 169.254.X.X是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器。就会得到其中一个IP。
191.255.255.255是广播地址,不能分配。
C类IP地址
一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类IP地址中网络的标识长度为24位,主机标识的长度为8位,C类网络地址数量较多,有209万余个网络。适用于小规模的局域网络,每个网络最多只能包含254台计算机。
C类IP地址范围192.0.0.0-223.255.255.255(二进制表示为: 11000000 00000000 00000000 00000000 - 11011111 11111111 11111111 11111111)。
C类IP地址的子网掩码为255.255.255.0,每个网络支持的最大主机数为256-2=254台
D类IP地址
D类IP地址在历史上被叫做多播地址(multicast address),即组播地址。在以太网中,多播地址命名了一组应该在这个网络中应用接收到一个分组的站点。多播地址的最高位必须是“1110”,范围从224.0.0.0到239.255.255.255。
C类地址总结
(1)C类地址第1字节、第2字节和第3个字节为网络地址,第4个字节为主机地址。另外第1个字节的前三位固定为110。
(2)C类地址网络号范围:192.0.0.0---223.255.255.0。
(3) C类地址中的私有地址:
192.168.X.X是私有地址。(192.168.0.0---192.168.255.255)
D类地址
(1) D类地址不分网络地址和主机地址,它的第1个字节的前四位固定为1110。
(2) D类地址范围:224.0.0.0---239.255.255.255
E类地址
(1) E类地址不分网络地址和主机地址,它的第1个字节的前五位固定为11110。
(2) E类地址范围:240.0.0.0---255.255.255.254
CIDR无类地址
IP/网络ID位数(子网掩码中1的位数)
除ABCDE以外的IP地址段划分方式,如:192.168.1.0 255.255.255.252等分成C段划分的地址
子网掩码(subnet mask)
子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。
子网掩码——屏蔽一个IP地址的网络部分的“全1”比特模式。
子网掩码(subnet mask)的八位
子网掩码通过和IP地址二进制数逐位进行“与”运算(全1则得1,不全1则得0),来区别网络标识和主机标识
网络ID=IP与子网掩码
IP:10.1.252.100
netmask:255.255.0.0
网络ID:10.1.0.0
例如:
A 10.1.252.213 255.255.0.0
B 10.1.253.210 255.255.255.0
A IP地址与A mask地址 网段10.1.0.0
A 用B IP地址与A mask地址 认为网段10.1.0.0
所以A认为B与自己同一网段
B IP地址与B mask地址 网段10.1.253.0
B 用A IP地址与B mask地址 认为网段10.1.252.0
所以B认为A与自己不同一网段
可变长度子网掩码
利用子网掩码可以把大的网络划分成子网,即VLSM(可变长子网掩码),也可以把小的网络归并成大的网络即超网。
子网、超网和无类域间路由
需要注意的是,不要以为同一网络的计算机分配不同的IP地址,就可以提高网络传输效率。事实上,同一网络内的计算机仍然处于同一广播域,广播包的数量不会由于IP地址的不同而减少,所以,仅仅是为计算机指定不同网段,并不能实现划分广播域的目的。若欲减少广播域,最根本的解决办法就是划分VLAN,然后为每个VLAN分别指定不同的IP网段。
传统IP地址分类的缺点是不能在网络内部使用路由,这样一来,对于比较大的网络,例如一个A类网络,会由于网络中主机数量太多而变得难以管理。为此,引入子网掩码(NetMask),从逻辑上把一个大网络划分成一些小网络。子网掩码是由一系列的1和0构成,通过将其同IP地址做“与”运算来指出一个IP地址的网络号是什么。对于传统IP地址分类来说,A类地址的子网掩码是255.0.0.0;B类地址的子网掩码是255.255.0.0;C类地址的子网掩码是255.255.255.0。例如,如果要将一个B类网络166.111.0.0划分为多个C类子网来用的话,只要将其子网掩码设置为255.255.255.0即可,这样166.111.1.1和166.111.2.1就分属于不同的网络了。像这样,通过较长的子网掩码将一个网络划分为多个网络的方法就叫做划分子网(Subnetting)。
在选择专用(私有)IP地址时,应当注意以下几点:
1、为每个网段都分配一个C类IP地址段,建议使用192.168.2.0--192.168.254.0段IP地址。由于某些网络设备(如宽带路由器或无线路由器)或应用程序(如ICS)拥有自动分配IP地址功能,而且默认的IP地址池往往位于192.168.0.0和192.168.1.0段,因此,在采用该IP地址段时,往往容易导致IP地址冲突或其他故障。所以,除非必要,应当尽量避免使用上述两个C类地址段。
2、可采用C类地址的子网掩码,如果有必要,可以采用变长子网掩码。通常情况下,不要采用过大的子网掩码,每个网段的计算机数量都不要超过250台计算机。同一网段的计算机数量越多,广播包的数量越大,有效带宽就损失得越多,网络传输效率也越低。
3、即使选用10.0.0.1--10.255.255.254或172.16.0.1--172.31.255.254段IP地址,也建议采用255.255.255.0作为子网掩码,以获取更多的IP网段,并使每个子网中所容纳的计算机数量都较少。当然,如果必要,可以采用变长子网掩码,适当增加可容纳的计算机数量。
4、为网络设备的管理WLAN分配一个独立的IP地址段,以避免发生与网络设备管理IP的地址冲突,从而影响远程管理的实现。基于同样的原因,也要将所有的服务器划分至一个独立的网段。
超网(Supernetting)是同子网类似的概念,它通过较短的子网掩码将多个小网络合成一个大网络。例如,一个单位分到了8个C类地址:202.120.224.0 ~ 202.120.231.0,只要将其子网掩码设置为255.255.248.0,就能使这些C类网络相通。
划分子网
一个大网分成若干个小网
网络ID向主机ID借位n,子网数:2^n
划分子网后损失IP地址数=(子网数-1)*2
例如:
172.16.0 0000000.0
172.16.0 0000000.1
172.16.0 0000000.00000001
172.16.0 1111111.11111111
172.16.0 1111111.11111111
172.16.1 0000000.00000000
172.16.1 0000000.00000001
172.16.1 1111111.11111110
172.16.1 1111111.254
172.16.1.255
合并多个小子网成一个大的超网
主机ID向网络ID借位
1、合并位必须一样才可以合并
2、借位后剩余位必须包含所有情况(即剩余位的变化)
例如:
220.78.168.0/16 - 220.78.175.0/16
220.78.10101 000.0
220.78.10101 001.0
220.78.10101 111.0
220.78.168.0/21
特殊地址
源IP地址
每一个字节都为0的地址(“0.0.0.0”)对应于当前主机;
若IP地址全为0,也就是0.0.0.0,则这个IP地址在IP数据报中只能用作源IP地址,这发生在当设备启动时但又不知道自己的IP地址情况下。在使用DHCP分配IP地址的网络环境中,这样的地址是很常见的。用户主机为了获得一个可用的IP地址,就给DHCP服务器发送IP分组,并用这样的地址作为源地址,目的地址为255.255.255.255(因为主机这时还不知道DHCP服务器的IP地址)。
0.0.0.0不是一个真正意义上的IP地址。它表示一个集合:所有不清楚的主机和目的网络。
限制广播地址
广播通信是“一对所有”的通信方式。若一个IP地址的2进制数全为1,也就是255.255.255.255,则这个地址用于定义整个互联网。如果设备想使IP数据报被整个Internet所接收,就发送这个目的地址全为1的广播包,但这样会给整个互联网带来灾难性的负担。因此网络上的所有路由器都阻止具有这种类型的分组被转发出去,使这样的广播仅限于本地网段。也就是说IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址;对本机来说,这个地址指本网段内(同一广播域)的所有主机
直接广播地址
一个网络中的最后一个地址为直接广播地址,也就是HostID全为1的地址。主机使用这种地址把一个IP数据报发送到本地网段的所有设备上,路由器会转发这种数据报到特定网络上的所有主机。
注意:这个地址在IP数据报中只能作为目的地址。另外,直接广播地址使一个网段中可分配给设备的地址数减少了1个。
环回地址
IP地址中不能以十进制“127”作为开头,该类地址中数字127.0.0.1到127.255.255.255用于本机回环地址,主要用于回环测试。在传输介质上永远不应该出现目的地址为“ 127.0.0.1”的 数据包。
如:127.0.0.1可以代表本机IP地址,使用ping127.0.0.1就可以测试本地TCP/IP协议是否已正确安装。另外一个用途是当客户进程用环回地址发送报文给位于同一台机器上的服务器进程,比如在浏览器里输入127.1.2.3,这样可以在排除网络路由的情况下用来测试IIS是否正常启动。
Loopbask回环网卡
组播地址
224.0.0.0到239.255.255.255
在IP地址空间中,有的IP地址不能为设备分配的,有的IP地址不能用在公网,有的IP地址只能在本机使用,诸如此类的特殊IP地址众多:
注意它和广播的区别。从224.0.0.0到239.255.255.255都是这样的地址。224.0.0.1特指所有主机, 224.0.0.2特指所有路由器。这样的地址多用于一些特定的程序以及多媒体程序。如果你的主机开启了IRDP(Internet路由发现协议,使用组播功能)功能,那么你的主机路由表中应该有这样一条路由。
224.0.0.5指OSPF路由器,地址多用于一些特定的程序以及多媒体程序
IP地址中凡是以“11110”开头的E类IP地址都保留用于将来和实验使用。
网络ID的第一个8位组也不能全置为“0”,全“0”表示本地网络。
NetID为0的
当某个主机向同一网段上的其他主机发送报文时就可以使用这样的地址,分组也不会被路由器转发。比如12.12.12.0/24这个网络中的一台主机12.12.12.2/24在与同一网络中的另一台主机12.12.12.8/24通信时,目的地址可以是0.0.0.8。
169.254.x.x
如果你的主机使用了DHCP功能自动获得一个IP地址,那么当你的DHCP服务器发生故障,或响应时间太长而超出了一个系统规定的时间,Windows系统会为你分配这样一个地址。如果你发现你的主机IP地址是一个诸如此类的地址,很不幸,十有八九是你的网络不能正常运行了
局域网的IP
在一个局域网中,有两个IP地址比较特殊,一个是网络号,一个是广播地址。网络号是用于三层寻址的地址,它代表了整个网络本身;另一个是广播地址,它代表了网络全部的主机。网络号是网段中的第一个地址,广播地址是网段中的最后一个地址,这两个地址是不能配置在计算机主机上的。
例如在192.168.0.0,255.255.255.0这样的网段中,网络号是192.168.0.0,广播地址是192.168.0.255。因此,在一个局域网中,能配置在计算机中的地址比网段内的地址要少两个(网络号、广播地址),这些地址称之为主机地址。在上面的例子中,主机地址就只有192.168.0.1至192.168.0.254可以配置在计算机上了。
MAC地址与IP地址区别
IP地址和MAC地址相同点是它们都唯一,不同的特点主要有:
1、对于网络上的某一设备,如一台计算机或一台路由器,其IP地址是基于网络拓扑设计出的,同一台设备或计算机上,改动IP地址是很容易的(但必须唯一),而MAC则是生产厂商烧录好的,一般不能改动。我们可以根据需要给一台主机指定任意的IP地址,如我们可以给局域网上的某台计算机分配IP地址为192.168.0.112 ,也可以将它改成192.168.0.200。而任一网络设备(如网卡,路由器)一旦生产出来以后,其MAC地址不可由本地连接内的配置进行修改。如果一个计算机的网卡坏了,在更换网卡之后,该计算机的MAC地址就变了。
2、长度不同。IP地址为32位(IPv4),MAC地址为48位。
3、分配依据不同。IP地址的分配是基于网络拓扑,MAC地址的分配是基于制造商。
4、寻址协议层不同。IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。 数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络)。
Windows中有DHCP则获取动态ip没有则启用备用配置的固定ip
TCP/IP:协议栈(实际使用协议)
Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。
TCP
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过三次握手建立连接,面向连接、端到端和可靠的数据包发送。
TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
网络协议
功能
当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制。之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。
TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。
在数据正确性与合法性上,TCP用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和;同时可以使用md5认证对数据进行加密。
在保证可靠性上,采用超时重传和捎带确认机制。
在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP采用称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
在拥塞控制上,采用广受好评的TCP拥塞控制算法(也称AIMD算法)。该算法主要包括三个主要部分:1)加性增、乘性减;2)慢启动;3)对超时事件做出反应。
首部格式
TCP的首部格式下图所示:
---Source Port是源端口,16位。
---Destination Port是目的端口,16位。
---Sequence Number是发送数据包中的第一个字节的序列号,32位。
---Acknowledgment Number是确认序列号,32位。
---Data Offset是数据偏移,4位,该字段的值是TCP首部(包括选项)长度除以4。
---标志位: 6位,URG表示Urgent Pointer字段有意义:
ACK表示Acknowledgment Number字段有意义
PSH表示Push功能,RST表示复位TCP连接
SYN表示SYN报文(在建立TCP连接的时候使用)
FIN表示没有数据需要发送了(在关闭TCP连接的时候使用)
Window表示接收缓冲区的空闲空间,16位,用来告诉TCP连接对端自己能够接收的最大数据长度。
---Checksum是校验和,16位。
---Urgent Pointers是紧急指针,16位,只有URG标志位被设置时该字段才有意义,表示紧急数据相对序列号(Sequence Number字段的值)的偏移。
连接建立
TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。
TCP三次握手的过程如下:
(1)客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
(2)服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
(3)客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。
三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。
连接终止
建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。具体过程如下图所示。
(1) 某个应用进程首先调用close,称该端执行“主动关闭”(active close)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。
(2) 接收到这个FIN的对端执行 “被动关闭”(passive close),这个FIN由TCP确认。
注意:FIN的接收也作为一个文件结束符(end-of-file)传递给接收端应用进程,放在已排队等候该应用进程接收的任何其他数据之后,因为,FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。
(3) 一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。
(4) 接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。
既然每个方向都需要一个FIN和一个ACK,因此通常需要4个分节。
注意:
(1) “通常”是指,某些情况下,步骤1的FIN随数据一起发送,另外,步骤2和步骤3发送的分节都出自执行被动关闭那一端,有可能被合并成一个分节。
(2) 在步骤2与步骤3之间,从执行被动关闭一端到执行主动关闭一端流动数据是可能的,这称为“半关闭”(half-close)。
(3) 当一个Unix进程无论自愿地(调用exit或从main函数返回)还是非自愿地(收到一个终止本进程的信号)终止时,所有打开的描述符都被关闭,这也导致仍然打开的任何TCP连接上也发出一个FIN。
无论是客户还是服务器,任何一端都可以执行主动关闭。通常情况是,客户执行主动关闭,但是某些协议,例如,HTTP/1.0却由服务器执行主动关闭。
可靠性实现
可靠性
TCP提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据包之前必须先建立一个TCP连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP。
TCP通过下列方式来提供可靠性:
1.应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据长度将保持不变。由TCP传递给IP的信息单位称为报文段或段(segment)。
2.当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。当TCP收到发自TCP连接另一端的数据,它将发送一个确认。TCP有延迟确认的功能,在此功能没有打开,则是立即确认。功能打开,则由定时器触发确认时间点。
3.TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。
4.既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
5.既然IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。
6.TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
两个应用程序通过TCP连接交换8bit字节构成的字节流。TCP不在字节流中插入记录标识符。我们将这称为字节流服务(bytestreamservice)。如果一方的应用程序先传10字节,又传20字节,再传50字节,连接的另一方将无法了解发方每次发送了多少字节。只要自己的接收缓存没有塞满,TCP 接收方将有多少就收多少。一端将字节流放到TCP连接上,同样的字节流将出现在TCP连接的另一端。
另外,TCP对字节流的内容不作任何解释。TCP不知道传输的数据字节流是二进制数据,还是ASCⅡ字符、EBCDIC字符或者其他类型数据。对字节流的解释由TCP连接双方的应用层解释。
这种对字节流的处理方式与Unix操作系统对文件的处理方式很相似。Unix的内核对一个应用读或写的内容不作任何解释,而是交给应用程序处理。对Unix的内核来说,它无法区分一个二进制文件与一个文本文件。
重传策略
TCP协议用于控制数据段是否需要重传的依据是设立重发定时器。在发送一个数据段的同时启动一个重传,如果在重传超时前收到确认(Acknowlegement)就关闭该重传,如果重传超时前没有收到确认,则重传该数据段。在选择重发时间的过程中,TCP必须具有自适应性。它需要根据互联网当时的通信情况,给出合适的重发时间。
这种重传策略的关键是对定时器初值的设定。采用较多的算法是Jacobson于1988年提出的一种不断调整超时时间间隔的动态算法。其工作原理是:对每条连接TCP都保持一个 变量RTT(Round Trip Time),用于存放当前到目的端往返所需要时间最接近的估计值。当发送一个数据段时,同时启动连接的定时器,如果在定时器超时前确认到达,则记录所需要的时间(M),并修正[2] RTT的值,如果定时器超时前没有收到确认,则将RTT的值增加1倍。通过测量一系列的RTT(往返时间)值,TCP协议可以估算数据包重发前需要等待的时间。在估计该连接所需的当前延迟时通常利用一些统计学的原理和算法(如Karn算法),从而得到TCP重发之前需要等待的时间值。
窗口确认
TCP的一项功能就是确保每个数据段都能到达目的地。位于目的主机的TCP服务对接受到的数据进行确认,并向源应用程序发送确认信息。
使用数据报头序列号以及确认号来确认已收到包含在数据段的相关的数据字节。
TCP在发回源设备的数据段中使用确认号,指示接收设备期待接收的下一字节。这个过程称为期待确认。
源主机在收到确认消息之前可以传输的数据的大小称为窗口大小。用于管理丢失数据和流量控制。这些变化如右图所示。
TCP与UDP的差别
IP
网络之间互连的协议(IP)是Internet Protocol的外语缩写,中文缩写为“网协”.
网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。
OSI协议栈(学习参考协议)
OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。该体系结构标准定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),即ISO开放系统互连参考模型。在这一框架下进一步详细规定了每一层的功能,以实现开放系统环境中的互连性、互操作性和应用的可移植性。
ISO将整个通信功能划分为七个层次,划分原则是:
(1)网路中各节点都有相同的层次;
(2)不同节点的同等层具有相同的功能;
(3)同一节点内相邻层之间通过接口通信;
(4)每一层使用下层提供的服务,并向其上层提供服务;
(5)不同节点的同等层按照协议实现对等层之间的通信。
(6)根据功能需要进行分层,每层应当实现定义明确的功能。
(7)向应用程序提供服务
各层功能
(1)物理层(Physical Layer)
物理层是OSI参考模型的最低层,它利用传输介质为数据链路层提供物理连接。它主要关心的是通过物理链路从一个节点向另一个节点传送比特流,物理链路可能是铜线、卫星、微波或其他的通讯媒介。它关心的问题有:多少伏电压代表1?多少伏电压代表0?时钟速率是多少?采用全双工还是半双工传输?总的来说物理层关心的是链路的机械、电气、功能和规程特性。
(2)数据链路层(Data Link Layer)
数据链路层是为网络层提供服务的,解决两个相邻结点之间的通信问题,传送的协议数据单元称为数据帧。
数据帧中包含物理地址(又称MAC地址)、控制码、数据及校验码等信息。该层的主要作用是通过校验、确认和反馈重发等手段,将不可靠的物理链路转换成对网络层来说无差错的数据链路。
此外,数据链路层还要协调收发双方的数据传输速率,即进行流量控制,以防止接收方因来不及处理发送方来的高速数据而导致缓冲器溢出及线路阻塞。
(3)网络层(Network Layer)
网络层是为传输层提供服务的,传送的协议数据单元称为数据包或分组。该层的主要作用是解决如何使数据包通过各结点传送的问题,即通过路径选择算法(路由)将数据包送到目的地。另外,为避免通信子网中出现过多的数据包而造成网络阻塞,需要对流入的数据包数量进行控制(拥塞控制)。当数据包要跨越多个通信子网才能到达目的地时,还要解决网际互连的问题。
(4)传输层(Transport Layer)
传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。
传输层传送的协议数据单元称为段或报文。
(5)会话层(Session Layer)
会话层主要功能是管理和协调不同主机上各种进程之间的通信(对话),即负责建立、管理和终止应用程序之间的会话。会话层得名的原因是它很类似于两个实体间的会话概念。例如,一个交互的用户会话以登录到计算机开始,以注销结束。
(6)表示层(Presentation Layer)
表示层处理流经结点的数据编码的表示方式问题,以保证一个系统应用层发出的信息可被另一系统的应用层读出。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据表示格式转换成网络通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。
(7)应用层(Application Layer)
应用层是OSI参考模型的最高层,是用户与网络的接口。该层通过应用程序来完成网络用户的应用需求,如文件传输、收发电子邮件等。
比喻
7 应用层:老板
6 表示层:相当于公司中演示文稿、替老板写信的助理
5 会话层:相当于公司中收寄信、写信封与拆信封的秘书
4 传输层:相当于公司中跑邮局的送信职员
3 网络层:相当于邮局中的排序工人
2 数据链路层:相当于邮局中的装拆箱工人
1 物理层:相当于邮局中的搬运工人
对等通信
比较TCP/IP
TCP/IP模型实际上是OSI模型的一个浓缩版本,它只有四个层次:
1.应用层,对应着OSI的应用层、表示层、会话层
2.传输层,对应着OSI的传输层
3.网络层,对应着OSI的网络层
4.网络接口层,对应着OSI的数据链路层和物理层
OSI模型的网络层同时支持面向连接和无连接的通信,但是传输层只支持面向连接的通信;TCP/IP模型的网络层只提供无连接的服务,但是传输层上同时提供两种通信模式。
计算机网络的物理拓扑分类
总线拓扑
总线拓扑的网络结构是将网络中的各个节点设备用一根总线(如同轴电缆等)挂接起来,实现计算机网络的功能。
任何连接在总线上的计算机都能在总线上发信号,并且所有计算机都能接收信号。
主要优点:
(1)网络结构简单,节点的插入、删除比较方便,易于网络扩展。
(2)设备少、电缆长度短、造价低,安装和使用方便。
(3)具有较高的可靠性。因为单个节点的故障不会涉及整个网络。
缺点:
(1)总线传输距离有限,通信范围受到限制。
(2)故障诊断和隔离比较困难。故障隔离困难。当节点发生故障,隔离起来还比较方便,一旦传输介质出现故障时,就需要将整个总线切断。
(3)易于发生数据碰撞,线路争用现象比较严重。分布式协议不能保证信息的及时传送,不具有实时功能,站点必须有介质访问控制功能,从而增加了站点的硬件和软件开销。
(4)分布式协议不能保证信息的及时传送,不具有实时功能,站点必须有介质访问控制功能,从而增加了站点的硬件和软件开销。
环状拓扑
入网设备通过转发器接入网络,一个转发器发出的数据只能被另一个转发器接收并转发,所有的转发器及其物理线路构成的环状网络系统。信号绕环传输。
特点
1.实时性较好:也就是说,信息在网中传输的最大时间固定。
2.每个结点只与相邻两个结点有物理链路
3.传输控制机制比较简单
4.某个结点的故障将导致物理瘫痪
5.单个环网的结点数有限
6.单向性:环形网的数据传输具有单向性,即每个转发器仅与两个相邻的转发器有直接的物理线路。
适用
局域网,实时性要求较高的环境
优点
1.电缆长度短。
2.增加或减少工作站时,仅需简单的连接操作。
3.可使用光纤。
缺点
1.节点的故障会引起全网故障。
2.故障检测困难。
3.环形拓扑结构的媒体访问控制协议都采用令牌传递的方式,在负载很轻时,信道利用率相对来说就比较低
双环拓扑
信号沿相反方向传输
比单环的复原能力更强
星型拓扑
在星型拓扑结构中,网络中的各节点通过点到点的方式连接到一个中央节点(又称中央转接站,一般是集线器或交换机)上,由该中央节点向目的节点传送信息。中央节点执行集中式通信控制策略,因此中央节点相当复杂,负担比各节点重得多。在星型网中任何两个节点要进行通信都必须经过中央节点控制。
工作原理基于总线拓扑
星型网中任何两个节点要进行通信都必须经过中央节点控制。因此,中央节点的主要功能有三项:当要求通信的站点发出通信请求后,控制器要检查中央转接站是否有空闲的通路,被叫设备是否空闲,从而决定是否能建立双方的物理连接;在两台设备通信过程中要维持这一通路;当通信完成或者不成功要求拆线时,中央转接站应能拆除上述通道。
由于中央节点要与多机连接,线路较多,为便于集中连线,采用一种成为集线器(HUB)或交换设备的硬件作为中央节点。一般网络环境都被设计成星型拓朴结构。星型网是广泛而又首选使用的网络拓扑设计之一。
优点缺点
优点:
(1)控制简单。任何一站点只和中央节点相连接,因而介质访问控制方法简单,致使访问协议也十分简单。易于网络监控和管理。
(2)故障诊断和隔离容易。中央节点对连接线路可以逐一隔离进行故障检测和定位,单个连接点的故障只影响一个设备,不会影响全网。
(3)方便服务。中央节点可以方便地对各个站点提供服务和网络重新配置。
缺点:
(1)需要耗费大量的电缆,安装、维护的工作量也骤增。
(2)中央节点负担重,形成“瓶颈”,一旦发生故障,则全网受影响。
(3)各站点的分布处理能力较低。
总的来说星型拓扑结构相对简单,便于管理,建网容易,局域网普遍采用的一种拓扑结构。采用星型拓扑结构的局域网,一般使用双绞线或光纤作为传输介质,符合综合布线标准,能够满足多种宽带需求。
扩展星型拓扑
如果星型网络扩展到包含与主网络设备相连的其它网络设备,这种拓扑就称为扩展星型拓扑。
相比星型拓扑的复原能力更强。
纯扩展星型拓扑的问题是:如果中心节点出现故障,网络的大部分组件就会被断开。
网状拓扑结构
网状拓扑结构,这种拓扑结构主要指各节点通过传输线互联连接起来,并且每一个节点至少与其他两个节点相连·网状拓扑结构具有较高的可靠性,但其结构复杂,实现起来费用较高,不易管理和维护,不常用于局域网。
优点
(1) 网络可靠性高,一般通信子网中任意两个节点交换机之间,存在着两条或两条以上的通信路径,这样,当一条路径发生故障时,还可以通过另一条路径把信息送至节点交换机。
(2) 网络可组建成各种形状,采用多种通信信道,多种传输速率。
(3) 网内节点共享资源容易。
(4) 可改善线路的信息流量分配。
(5) 可选择最佳路径,传输延迟小。
缺点
(1) 控制复杂,软件复杂。
(2) 线路费用高,不易扩充。
(3)在以太网中,如果设置不当,会造成广播风暴,严重时可以使网络完全瘫痪。
网状拓扑结构一般用于Internet骨干网上,使用路由算法来计算发送数据的最佳路径。
逻辑拓扑
逻辑拓扑描述的是设备之间是如何通过物理拓扑进行通信。物理拓扑与逻辑拓扑是各自独立的。例如:所有类别的以太网在设备之间通信时使用的是逻辑总线型拓扑,无论线缆的物理布局如何都是如此。
物理拓扑图由于是根据网络设备的实际物理地址进行扫描而得出,所以它更加适合的是网络设备层管理,通过物理拓扑图,一旦网络中出现故障或者即将出现故障,物理拓扑图可以及时详细地告诉网络管理者是哪一台网络设备出了问题,举个简单的例子,当网络中某台交换机出现了故障,通过物理拓扑图,网管系统可以告诉管理者在网络里众多的交换设备中是哪一台交换机的那一个端口出现了问题,通过这个端口连接了那些的网络设备,便于网管人员进行维护。
而对于逻辑拓扑来说,他更加注重的是应用系统的运行状况,它反映的是实际应用的情况
跨网段通信:
mac地址是不断变化的
反向ARP----->通过mac地址获取ip地址
bc计算器
ibase=2 (以2进制输入)
obase=8 (以8进制输出)
[root@localhost ~]# bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty‘. ibase=2 obase=8 1001 11 [root@localhost ~]# let i=2#1001 [root@localhost ~]# echo $i 9
跨网络通信
跨网络通信:路由
路由分类:
主机路由:精确到每台机器IP和Mask
网络路由:记录网络路径(子网网段)
默认路由:0.0.0.0/0 (一般为边界路由器如互联网;而且只能是一个出路的路由器才可以)
优先级:精度越高,优先级越高
例如:
linux(Centos7.2)路由表
[root@localhost ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.1.0.1 0.0.0.0 UG 100 0 0 eno16777736 10.1.0.0 0.0.0.0 255.255.0.0 U 100 0 0 eno16777736 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
A、B、C、D、E为网段
1、2、3、4、5、6、7、8为接口
从A开始访问各个网络
network/n interface gateway
A 1 IP1
B 2 IP2
C 2 IP3
D 2 IP3
E 2 IP3
DHCP
不能跨路由除非有(DHCP代理)
分配地址会有租赁时间
租赁时间到一半时续期重新计时
失败则到临近租赁时间再次续期
否则到期后重新获取
基本网络配置
将Linux主机接入到网络,需要配置网络相关设置。
一般包括如下内容:
主机名
/etc/sysconfig/network
#hostname
IP/netmask
路由:默认网关
DNS服务器
主DNS服务器
次DNS服务器
第三DNS服务器
网络配置方式
静态指定:
ifcfg: ifconfig, route, netstat
ip: object {link, addr, route}, ss, tc
纯字符界面
system-config-network
system-config-network-tui
setup
配置文件
CentOS 7:网络配置工具
nmcli, nmtui, nm-connection-editor
动态分配:
DHCP: Dynamic Host Configuration Protocol
配置网络接口
接口命名方式: CentOS 6:
以太网: eth[0,1,2,...]
DELL服务器的网卡名有时不遵循上面规则
ppp: ppp[0,1,2,...]
ifconfig命令
ifconfig [interface]
# ifconfig -a
# ifconfig IFACE [up|down]
ifconfig interface [aftype] options | address ...
# ifconfig IFACE IP/mask [up]
# ifconfig IFACE IP netmask MASK
注意:立即生效;
启用混杂模式: [-]promisc
vim /etc/udev/rules.d/70-persistent-net.rules
[root@centos6 ~]# chkconfig NetworkManager off
[root@centos6 ~]# service NetworkManager stop
route命令
路由管理命令
查看: route -n
添加: route add
route add [-net|-host] target [netmask Nm] [gw Gw]
[[dev] If]
目标: 192.168.1.3 网关: 172.16.0.1
# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
目标: 192.168.0.0 网关: 172.16.0.1
# route add -net 192.168.0.0 netmask 255.255.255.0
gw 172.16.0.1 dev eth0
# route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
默认路由,网关: 172.16.0.1
# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
# route add default gw 172.16.0.1
删除: route del
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
目标: 192.168.1.3 网关: 172.16.0.1
# route del -host 192.168.1.3
目标: 192.168.0.0 网关: 172.16.0.1
# route del -net 192.168.0.0 netmask 255.255.255.0
配置动态路由
通过守护进程获取动态路由
安装quagga包,支持多种格式的RIP、 OSPF和BGP
命令vtysh配置
本文出自 “秋风夜雨” 博客,请务必保留此出处http://2849159106.blog.51cto.com/7881853/1851224
Linux网络基础番外篇(IP、MAC、TCP)