计算机网络 知识点小结1

部分转载自:
http://blog.csdn.net/never_cxb/article/details/50420521
https://www.cnblogs.com/peterYong/p/6556621.html
https://zhidao.baidu.com/question/509985320.html?loc_ans=1287009039
https://www.jianshu.com/p/b380f5d78290

【TCP/UDP定义】

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。

UDP (User Datagram Protocol,用户数据报协议)是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。

TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。

TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。

TCP对应的协议和UDP对应的协议

TCP对应的协议:
(1) FTP(File Transfer Protocol):定义了文件传输协议,使用21端口。
(2) Telnet:一种用于远程登陆的协议,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
(3) SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,用于发送邮件。服务器开放的是25号端口。
(4) POP3(Post Office Protocol - Version 3 ,邮局协议版本3):它是和SMTP对应,POP3用于接收邮件。使用110端口。
(5)HTTP(HyperText Transfer Protocol,超文本传输协议):从Web服务器传输超文本到本地浏览器的传送协议。默认80端口。

UDP对应的协议:
(1) DNS(Domain Name System,域名系统):用于域名解析服务,将域名地址转换为IP地址。使用53号端口。
(2) SNMP(Simple Network Management Protocol ):简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
(3) TFTP(Trivial File Transfer Protocol):简单文件传输协议,该协议在熟知端口69上使用UDP服务。

【TCP/IP 参考模型】

分层

这里写图片描述
每一层都是独立存在的,因此分配到各层的任务能够独立地执行,变更其中某层提供的方案时不影响其他层。

这也可以理解为一个松耦合的设计。

详解

网络层 主要是 ip 协议,可以通过 ip 找到某个机器,但是机器上有很多应用程序,每个程序都占用相应的端口,传输层不同协议有不同的端口,通过 ip + 端口 就可以确定某个机器上的具体应用程序了。

Server A 和 Server B 直接传输数据,有封装和解封装的过程。

数据从A 的应用层往下走到物理层,会在每一层都会加上头部信息,进行封装,然后再发送到B。

然后 Server B 从 最下面的物理层往上 每一层进行解封装,最后到达应用层,得到数据。

  • 物理层:建立、维护、断开物理连接,即将电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式
  • 链路层:建立逻辑连接,进行硬件地址寻址,差错检验。数据包会带上发送地址和接收地址,也就是MAC地址。
  • 网络层:进行逻辑地址寻址,实现不同网络间的路径选择。网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。
    因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理MAC地址。

  • 传输层:定义传输数据的协议端口号,以及流控、差错检验。同一台主机上有许多程序都需要用到网络,端口可以确定表示这个数据包到底供哪个程序使用。
    传输层建立”端口到端口”的通信,”网络层”的功能是建立”主机到主机”的通信。
    (ftp 21,ssh 22,dns 53,http 80)

  • 会话层:建立、管理、终止会话。对应主机进程,指本地主机与远程主机正进行的会话。
  • 表示层:数据的表示、安全、压缩。
  • 应用层:网络服务与最终用户的一个接口。我们在传输数据时,可以只使用(传输层)TCP/IP协议,但没有应用层,便无法识别数据内容。
    如果想要使传输的数据有意义,则必须使用到应用层协议。

【TCP 区别 UDP】

TCP连接是由4个值来识别的:
<源IP地址、源端口号、目的IP地址、目的端口号>

  • TCP是面向连接的、可靠的
    其实网络的不安全不稳定特性,无论多少次握手都不能保证连接的可靠性
    但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性

  • UDP 无连接的、不可靠
    UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发。

UDP 交给上层进行差错控制,可以代码对UDP的数据收发进行验证,比如发送方对每个数据包进行编号然后由接收方进行验证啊什么的
 即使是这样,UDP因为在底层协议的封装上没有采用类似TCP的“三次握手”而实现了TCP所无法达到的传输效率

【IP地址及其表示方法】

IP地址定义:
IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在在全世界是唯一的32位的标示符。IP地址现由因特网名字和数字分配机构ICANN进行分配。

两级IP地址标记:IP地址::={<网络号>,<主机号>}

网络号:标识主机(或路由器)所连接到的网络,一个网络号在整个因特网范围内必须是唯一的。
主机号:标识该主机(或路由器),一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。

全为0的主机号表示该IP地址是“本主机”所连接到的单个网络地址;
全为1的主机号表示该网络的所有主机。

IP地址分类:

  • A类地址

(1)A类IP地址。由1个字节的网络地址和3个字节的主机地址,网络地址的最高位必须是“0”。如:0XXXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX(X代表0或1) 。每个网络能容纳1亿多个主机。
(2)A类IP地址范围:1.0.0.1—126.255.255.254
(3)A类IP地址中的私有地址和保留地址:① 10.X.X.X是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。范围(10.0.0.1—10.255.255.254)即00000001.XXXXXXXX.XXXXXXXX.XXXXXXXX去掉最高、最低位。
② 127.X.X.X是保留地址,用做循环测试用的。
(4)A类IP地址网络号(0XXXXXXX)去掉最低、最高位。主机号去掉最低、最高位。

  • B类地址

(1) B类IP地址。由2个字节的网络地址和2个字节的主机地址,网络地址的最高位必须 是“10”。如:10XXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX(X代表0或1)。每个网络能容纳6万多个主机 。
(2) B类IP地址范围:128.0.0.1—191.255.255.254。
(3) B类IP地址的私有地址和保留地址① 172.16.0.0—172.31.255.254是私有地址,即主机号10101100.0001XXXX.XXXXXXXX.XXXXXXXX,去掉一个最高位。 ② 169.254.X.X是保留地址10101001.11111110.XXXXXXXX.XXXXXXXX。如果你的IP地址是自动获取IP地址, 而你在网络上又没有找到可用的DHCP服务器。就会得到其中一个IP;191.255.255.255是广播地址,不能分配。
(4)B类IP地址网络号(10XXXXXX.XXXXXXXX)全部都行。128.0.X.X主机号去掉最低;191.255.X.X主机号去掉最高位。

  • C类地址

(1) C类IP地址。由3个字节的网络地址和1个字节的主机地址,网络地址的最高位必须是“110”。如:110XXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX(X代表0或1) 。C类网络可达209万余个,每个网络能容纳254个主机。
(2)C类IP地址范围:192.0.0.1—223.255.255.254。
(3)C类地址中的私有地址:192.168.X.X是私有地址。(192.168.0.1—192.168.255.255)即11000000.10101000.XXXXXXXX.XXXXXXXX
(4)C类IP地址网络号(110XXXXX.XXXXXXXX.XXXXXXXX)全部都行。192.0.0.X去掉最低位;223.255.255.X去掉最高位。

  • D类地址

(1) D类地址不分网络地址和主机地址,它的第1个字节的前四位固定为 1110。 如: 1110XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX(X代表0或1)。这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。
(2) D类地址范围:224.0.0.1—239.255.255.254

  • E类地址

(1) E类地址不分网络地址和主机地址,它的第1个字节的前四位固定为 1111。 如:1111XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX(X代表0或1)
(2) E类地址范围:240.0.0.1—255.255.255.254

划分子网

划分子网定义: 第一、IP地址空间的利用率有时候很低;第二、路由表太大会使网络性能变坏;第三、两级IP地址不够灵活。在IP地址中增加了一个“子网号字段”,使得两级IP地址变成三级IP地址,能够更好地解决上述问题。这种做法叫做划分子网。将物理网络划分成若干个子网、划分子网纯属内部的事情,本单位以外的网络看不见这个网络是由多少个子网组成,因为这个单位对外仍然表现为一个网络。子网掩码是一个网络或一个子网的重要属性。
划分子网增加了灵活性。但却减少了能够连接在网络的主机数量。

三级IP地址标记:IP地址::={<网络号>,<子网号>,<主机号>}

子网掩码:子网掩码是一个32位地址,用于屏蔽IP地址的一部分以 区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。划分子网后,通过使用掩码,把子网隐藏起来,使得从外部看网络没有变化,这就是子网掩码。在这么多网络IP中,国际规定有一部分IP地址是用于我们的局域网使用,也就 是属于私网IP,不在公网中使用的,它们的范围是:
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255

以C类网络为例,原有8位主机位,2的8次方即256个主机地址,默认子网掩码255.255.255.0。
借用1位主机位,产生2个子网,每个子网有126个主机地址;借用2位主机位,产生4个子网,每个子网有62个主机地址……

缺省状态:
A类网络的子网掩码为255.0.0.0
B类网络的子网掩码为255.255.0.0
C类网络的子网掩码为255.255.255.0
例:192.168.1.1 255.255.255.0 或者标识成 192.168.1.1/24(24表示掩码中“1”
的个数)

【子网详解】

一、子网掩码的含义和根据子网掩码划分子网
一个IP地址必然属于某一个网络,或者叫子网。子网掩码就是用来指定某个IP地址的网络地址的,换一句话说,就是用来划分子网的。
例如,一个A类网络可以容纳16777214台主机。但是在实际运用中,不可能把一个A类网络只用于一个子网,因为那样管理起来很不方便,也会出现广播风暴等种种问题,所以需要根据实际需求把它划分为若干个较小的子网。一个B类网络可以容纳65534台主机,往往也是需要划分子网的。即便一个小型企业内部,为了部门之间的职能的需要,配置那些电脑可以互相访问,哪些不能互相访问,就需要通过划分子网的方法来实现。

IP地址位数=网络位数+主机位数=32位。子网掩码的位数就是网络的位数。

A类网络的网络位数是8位,子网掩码就是11111111.00000000.00000000.00000000,换算成二进制表示为255.0.0.0。
B类网络的网络位数是16位,子网掩码就是11111111.11111111.00000000.00000000,换算成十进制表示为255.255.0.0。
C类网络的网络位数是24位,子网掩码就是11111111.11111111.11111111.00000000,换算成十进制表示为255.255.255.0。
A类网络加长子网掩码到16位就把一个A类网络划分为256个B类网络同样大小的网络,再加长到24位就又把每个B类大小的子网划分为256个C类网络大小的子网。就是这个道理。一个大的网络,通过把子网掩码加长,使网络位多了,也就是网络数目多了,子网就多了。
当然你也可以不划分为256个子网,而划分为128个,64个,32个,16个,8个,4个,2个。
一个B类网络的默认子网掩码为255.255.0.0,你如果想把它划分为2个子网,网络位数就成立17位,也就是说子网掩码就变成了255.255.128.0;想划分为16个子网,因为16是2的4次方,所以网络位数加4变成了20位,也就是说子网掩码加长,成了20位,就是255.255.240.0。依此类推。
一个C类网络的默认子网掩码为24位的,那么主机位=32-24=8位,2的8次方等于256,所以一个C类网络的IP地址数量(包括网络地址和广播地址)为256个。
但是你仍然可以通过加长子网掩码的手段,把一个C类子网划分为更多的子网。划分的子网数必定是2的n次方个,每个子网的IP数量必定是2的(8- n)次方个。
子网掩码加长1位,划分2个子网;加长2位,划分4个子网,加长6位,划分2的6次方个,也就是64个子网。

子网掩码的1的个数表示网络位的个数,简单地来说,网络位是不属于你控制的,是上级主管给你的,给你多少就是多少。但是主机位是你可以控制的,你可以把它缩短,把缩短出来的位数加到网络位中,这样网络位就长了,子网数就多了,相应地每个子网的IP数量就少了。
记住下面的公式,遇到再复杂的子网划分问题也难不倒你了。

IP地址位数=32 网络位+主机位=32
子网掩码加长n位,则在当前子网基础上划分为2的n次方个子网。
每个子网的IP地址数量=2^(32-划分前子网掩码位数-n)

二、如何根据子网划分的目标计算子网掩码
简单来说,子网掩码就是网络地址的位数。
一个IP地址一共有32位,其中靠前的某些位表示网络地址,后面的某些位表示主机位。
网络位数+主机位数=IP地址位数=32
知道了这个道理,计算子网掩码的方法就是:已知子网内IP数的多少,求出主机位的位数,用32减去主机位数就等于网络位数,也就是子网掩码。
举最简单的例子。一个C类网络,包括256个主机位置,256是2 的8次方,所以主机位是8,那么网络位就是32-8=24,也就是说子网掩码是24位,用二进制表示就是11111111.11111111.11111111.00000000,换算成十进制就是255.255.255.0
再比如一个C类网络划分的子网,每个网络主机IP数是32, 而32是2的5次方,所以主机位是5,那么网络位就是32-5=27,也就是说子网掩码是27位,用二进制表示就是11111111.11111111.11111111.11100000,换算成十进制就是255.255.255.224
再比如一个B类网络划分的子网,每个网络主机IP数是1024, 而1024是2的10次方,所以主机位是10,那么网络位就是32-10=22,也就是说子网掩码是22位,用二进制表示就是11111111.11111111.11111100.00000000,换算成十进制就是255.255.252.0
子网划分是通过改变子网掩码的位数来实现的。比如一个C类IP地址,默认子网掩码是24位的,二进制表示是11111111.11111111.11111111.0000000,换算成10进制的就是255.255.255.0。
如果是这样的子网掩码,后面的8位都可以用来做为主机的位置,2 的8次方等于256,一共有256个IP位置,因为有2个不能用,所以可用的主机位置为254个。
但是你要把这样一个地址划分成2个子网,就要从主机位里拿出一位来作为网络地址,网络地址就成了25位了。相应地主机位就成了7位了,2 的7次方等于128,一共有126个地址可用。
这是从正向来说的,就是已知要划分的子网数,求每个子网的主机数。但是在实际工作中往往是先知道每个子网的主机数,让你划分子网。其实也很简单。
首先你算一下主机数更接近于2 的几次方,那么主机位数就是几位。32减去主机位就是网络位。

举例说明。
假如给你一个C类IP地址192.168.0.0。假如你想划分2个子网,一个里面有100台电脑,另一个有50台电脑。
100大于2的6次方,小于2的7次方,所以主机位数取7位。那么网络位数就是32-7=25位。25位的子网掩码11111111.11111111.11111111.10000000
换算成10进制的就是
255. 255. 255. 128,这就是第一个子网的子网掩码,网络号为192.168.0.0/25,网络地址192.168.0.0,主机地址192.168.0.1~192.168.0.126,广播地址192.168.0.127
50大于2的5次方,小于2的6次方,所以主机位数取6位。那么网络位数就是32-6=26位。26位的子网掩码11111111.11111111.11111111.11000000
换算成10进制的就是
255. 255. 255. 192,这就是第二个子网的子网掩码,网络号为192.168.0.128/26,网络地址192.168.0.128,主机地址192.168.0.129~192.168.0.190,广播地址192.168.0.191

练习题

把子网掩码为255.255.0.0的网络40.15.0.0分为两个子网,假设第一个子网为40.15.0.0/17,则第二个子网为?

答案:

40.15.0.0/17 表示网段是40.15.0.0,子网掩码是17位。
子网掩码为:255.255.128.0,用二进制表示为:
斜杠后面的17表示子网掩码前17位为1.

划分为两个子网的话子网掩码应该为255.255.128.0
第一个子网是40.15.0.0/17,可用地址范围是40.15.0.1~40.15.127.254
第二个子网是40.15.128.0/17,可用地址范围是40.15.128.1~40.15.255.254

【NAT穿透技术】

NAT(Network Address Translation,网络地址转换)是一种网络地址翻译技术,将内部私有IP地址改变成可以在公网上使用的.
这里写图片描述

NAT三种实现方式

  • 静态地址转换:一个公网IP对应一个内部IP,一对一转换
  • 动态地址转换:N个公网IP对应M个内部Ip,不固定的一对一IP转换关系.同一时间,有M-N个主机无法联网.
  • 端口多路复用:对外只有一个公网IP,通过端口来区别不同内部IP主机的数据.

交换机、路由器和网关

1)交换机

在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。把很多个电脑连到一起,形成一个局域网,内部可以互相交流。交换机拥有一条高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背 部总线上,当控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部 交换矩阵迅速将数据包传送到目的端口。目的MAC若不存在,交换机才广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部地址表 中。

交换机工作于OSI参考模型的第二层,即数据链路层。交换机内部的CPU会在每个端口成功连接时,通过ARP协议学习它的MAC地址,保存成一张 ARP表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。因此,交换机可用于划分数据链路层广播,即冲突域;但它不 能划分网络层广播,即广播域。

交换机被广泛应用于二层网络交换,俗称“二层交换机”。

交换机的种类有:二层交换机、三层交换机、四层交换机、七层交换机分别工作在OSI七层模型中的第二层、第三层、第四层盒第七层,并因此而得名。

2)路由器

路由器(Router)是一种计算机网络设备,提供了路由与转送两种重要机制,可以决定数据包从来源端到目的端所经过 的路由路径(host到host之间的传输路径),这个过程称为路由将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。路由工作在OSI模型的第三层——即网络层,例如网际协议。

路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。 路由器与交换器的差别,路由器是属于OSI第三层的产品,交换器是OSI第二层的产品(这里特指二层交换机)。

3)网关

网关实质上是一个网络通向其他网络的 IP地址。
网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求
从一个网络向另一个网络发送信 息,也必须经过一道“ 关口”,这道关口就是网关。 顾名思义,网关( Gateway)就是一个网络连接到另一个网络的“关口”。也就是网络 关卡。由于历史的原因,许多有关TCP/IP的文献曾经把网络层使用的路由器称为网关,在今天很多局域网采用都是路由来接入网络,因此通常指的网关就是路由器的IP。

默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。默认网关必须是电脑自己所在的 网段中的IP地址,而不能填写其他网段中的IP地址。

自动设置就是利用 DHCP服务器来自动给网络中的电脑分配IP地址、 子网掩码和 默认网关。这样做的好处是一旦网络的 默认网关发生了变化时,只要更改了DHCP服务器中默认网关的设置,那么网络中所有的电脑均获得了新的默认网关的IP地址。

在传统TCP/IP术语中,网络设备只分成两种,一种为网关(gateway),另一种为主机(host)。网关能在网络间转递数据包,但主机不能转送数据包。在主机(又称终端系统,end system)中,数据包需经过TCP/IP四层协议处理,但是在网关(又称中介系 统,intermediate system)只需要到达网际层(Internet layer),决定路径之后就可以转送。在当时,网关 (gateway)与路由器(router)还没有区别。

在现代网络术语中,网关(gateway)与路由器(router)的定义不同。

网关(gateway)能在不同协议间移动数据
路由器(router)是在不同网络间移动数据 相当于传统所说的IP网关(IPgateway)

【三次握手】

名词介绍

  • seq (Sequence Number)序列号,这是为了连接以后传送数据用的
  • ack(Acknowledgment Number)确认序列号,是对收到的数据包的确认,值是等待接收的数据包的序列号。
  • SYN synchronous 同步信号
  • ACK Acknowledgement 应答信号, 当 ACK=1时候表示ack字段有意义
  • SYN 和 ACK 也表示 TCP 的标志位?

三次握手步骤
这里写图片描述

  1. 客户端 发起握手,目的端点是 服务端 的端点 post_server
    生成一个随机数作为它的初始化发送序号 x
    发出一个同步报文段,SYN=1发送序号 seq=x
    并进入SYN_SEND状态,等待服务器确认

  2. 服务端监听到端口 post_server 上有连接请求,
    响应 生成一个随机数作为它的初始发送序号 seq = y
    发出同步报文字段并对主机 A 端口1的连接请求进行确认,发送ack=x+1
    即发送 SYN+ACK 包,此时服务器进入SYN_RECV状态

  3. 主机 A发出对 服务端 端口 post_server 的确认,确认序号 ack=y+1,还有seq=x+1 客户端和服务器进入ESTABLISHED状态,完成三次握手

为什么采用3次握手而不是2次握手?

(为什么A还要发一次确认呢?)

第一次握手 客户端发,服务端 知道 客户端 可以 发消息
第二次握手 服务端收和发,客户端 知道 服务端 可以 接收消息 和 发消息
第三次握手 客户端收和发,服务端 知道 客户端可以 接收消息 和 发消息

采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B的资源浪费。

采用两次握手不行,原因就是上面说的实效的连接请求的特殊情况。
3 次是双向通信的最小值,也就是 SYN, SYN ACK, ACK ,两个发送、两个接收 ,其中第二次把接收和发送合在一起了

如果两次握手的话,客户端有可能因为网络阻塞等原因会发送多个请求报文,这时服务器就会建立连接,浪费掉许多服务器的资源。所以要增加第三次握手。

第3次失败会怎么办?

第三次失败,只有客户端处于成功状态(因为第2次服务器返回了ACK),服务器端没有接收到客户端的 ACK

这要分几种情况讨论:

  • 客户端发出的 ACK 丢失了,发出的下一个数据包没有丢失,则服务端接收到下一个数据包(这个数据包里也会带上ACK信息),能够进入正常的ESTABLISHED状态

  • 如果服务端和客户端都没有数据发送,或者服务端想发送数据(但是发不了,因为没有收到客户端的ACK),服务器都会有定时器发送第二步SYN+ACK数据包,如果客户端再次发送ACK成功,建立连接。

  • 如果一直不成功,服务器肯定会有超时设置,超时之后会给客户端发RTS报文,进入CLOSED状态,防止SYN洪泛攻击。

【4次挥手关闭连接】

这里写图片描述

1.主机 A 关闭 A主机的 端口1 到 B主机的 端口2 的传输连接:
1)应用程序通知 TCP 数据已经发送完毕时,关闭连接
2) TCP 向主机 B 发送一个带 FIN 附加标记的报文段(FIN表示finish),FIN=1,seq=x

2.主机 B 响应:
1)收到这个 FIN 报文段之后,并不立刻用 FIN 报文段回复主机 A,而是先向主机 A 发送一个确认序号 ,ACK=1,ack=x+1,seq=z
2)同时通知自己相应的应用程序,主机 A 方传输已经结束,对方要求关闭连接(先发送 ACK 的目的是为了防止这段时间内,主机 A 重传 FIN 报文段)

此时 A 到 B 方向上的传输连接已经关闭(看第4有TIME_WAIT状态等待2MSL,第2步的 A 到 B 并没有彻底关闭?),但是主机
B 到 A 还可以发送数据,连接处于半关闭的状态。(因为原来 TCP 是全双工的工作方式,只关闭了一端的连接)

3.主机 B 关闭 端口2到端口1的传输连接:
1)应用程序告诉 TCP: 我要彻底地关闭连接
2)TCP 收到对最后数据的确认后,向主机 A 发送一个 FIN 报文段。
FIN=1,seq=y,ACK=1,seq=x+1,
y是B发送数据的最后字节的序号加1。

4.主机 A 响应:
1) 收到这个 FIN 报文段之后,向主机 B 发送一个 ACK 表示连接彻底释放。ACK=1,ack=y+1
2) 主机B收到主机A的ACK报文段以后,就关闭连接;此时,主机A等待2MSL (Maximum Segment Lifetime)后依然没有收到回复,则证明主机 B已正常关闭,那好,主机A也可以关闭连接了。

为什么A在TIME-WAIT状态必须等待2MSL的时间呢?

  • 为了保证A发送的最后一个ACK报文段能够到达B
  • 防止已失效的连接请求报文段出现在本连接中

为什么连接的时候是三次握手,关闭的时候却是四次握手?

TCP是全双工模式,关闭连接时,当 主机 B收到主机A的FIN报文时,仅仅表示主机 A不再发送数据了但是还能接收数据。

主机B也未必全部数据都发送给A了,所以B可以立即close;也可以发送一些数据给A后,再发送FIN报文给对方来表示同意现在关闭连接,因此,主机 BACK和FIN一般都会分开发送。

在浏览器中输入www.baidu.com后执行的全部过程

1、应用层:客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层

2、在客户端的传输层把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。

3、客户端的网络层不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。

4、客户端的链路层包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址

事件顺序:

(1) 浏览器获取输入的域名www.baidu.com
(2) 浏览器向DNS请求解析www.baidu.com的IP地址
(3) 域名系统DNS解析出百度服务器的IP地址
(4) 浏览器与该服务器建立TCP连接(默认端口号80)
(5)浏览器发出HTTP请求,请求百度首页
(7) TCP连接释放
(8)浏览器将首页文件进行解析,并将Web页显示给用户。

涉及到的协议:

(1) 应用层:

  • HTTP(www访问协议),
  • DNS(域名解析服务)

DNS解析域名为目的IP,通过IP找到服务器路径,客户端向服务器发起HTTP会话,然后通过运输层TCP协议封装数据包,在TCP协议基础上进行传输

(2) 传输层:

  • TCP(为HTTP提供可靠的数据传输),
  • UDP(DNS使用UDP传输)

HTTP会话会被分成报文段,添加源、目的端口;TCP协议进行主要工作

(3)网络层:

  • IP(IP数据数据包传输和路由选择),
  • ICMP(提供网络传输过程中的差错检测),
  • ARP(将本机的默认网关IP地址映射成物理MAC地址)为数据包选择路由,

IP协议进行主要工作,相邻结点的可靠传输,ARP协议将IP地址转成MAC地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值