【无标题】HCIA 第三天---VLSM和CIDR的划分与汇总计算,TCP/UDP协议,TCP的三次握手和四次挥手含义及原因

VLSM ---可延长子网掩码---子网划分
192.168.1.0/24
192.168.1.0 0000000/25 --- 192.168.1.0/25 ---- 192.168.1.1 -
192.168.1.126(子网范围)

192.168.1.1 0000000/25 --- 192.1 68.1.128/25 ---
192.168.1.129 - 192.168.1 .254(子网范围)
例如:将172.16.0.0/16分成8个网段:
(1)172.16.000 0000.0.0000000 /19 --- 172.16.0.1 - 172.16.31.254 .
(2)172.16.001 00000.00000000 /19 --- 172.16.32.1 -
172.16.63.254
(3)172.16.0100000.00000000/19 --- 172.16.64.1- 172.16.95.254
(4)172.16.01100000.00000000/19 --- 172.16.96.1 - 172.16.127.254
(5)172.16.10000000.00000000 /19 --- 172.16.128.1 - 172.16. 159.254
(6)172.16.10100000.00000000/19 --- 172.16.160.1 - 172.16.191.254
(7)172.16.11100000.00000000/19 --- 172.16.224.1 - 172.16.255.254
CIDR ---无类域间路由---汇总
取相同,去不同---针对二进制
192.168.1.00000000/25
192.168.1.1 0000000/25
==》192.168.1.0/24
例如:将下面四个汇总:192.168.0.0/24
192.168.1.0/24
192.168.2.0/24 .
192.168.3.0/24 .
答:192.168.00000000.0/24
192.168.00000001.0/24
192.168.00000010.0/24
192.168.00000011.0/24
最后转化为:192.168.0.0/22 ---超网
例如:172.16.0.0/24
172.16.1.0/24
172.16.2.0/24
172.16.3.0/24
最后转化为:172.16.0.0/22---汇总
OSI/RM --开放式系统互联参考模型
1979年--- ISO组织---国际标准化组织
核心思想---分层---属于同一层面的不同功能其目的和作用相同或
相似,不同层面的不同功能具有明显的差异。每-层都在下层提供服
务的基础上再提供增值服务。
分层的好处: 1,便于标准化
2,降低层次之间的关联性
3,便于学习和理解
应用层
表示层
会话层---维持网络应用和网络服务器之间的会话联系。
传输层---实现端到端的传输----端口号---区分和标定不同的应用
的--- 16位二进制构成--- 0 - 65535 (其中0不作为传输层的端口使
用),所以端口号的取值范围1 - 65535;其中,1 - 1023称为知名端口号。SPORT(源端口号)可以随机取端口号, DPORT(目标端口号)
网络层.
数据链路层---- MAC ---介质访问控制层,LLC ---逻辑链路控制
层--- FCS (帧校验序列) --- 确保数据完整性--- CRC ---循环冗余算

物理层
TCP/IP ---协议簇(很多协议组成的团体)
TCP/IP参考模型

(b)TCP/IP四层模型--- TCP/IP标准模型

(c)TCP/IP五层模型---TCP/IP对等模型 

PDU---协议数据单元。  如:L1PDU,L2PDU ...L7PDU

应用层---数据报文
传输层---数据段
网络层---数据包
数据链路层---数据帧
物理层---比特流

封装和解封装
应用层--- HTTP ---超文本传输协议--- TCP 80
               HTTPS --- HTTP + SSL --- TCP 443
               FTP ---文件传输协议--- TCP 20/21
               TFTP ---简单文件传输协议--- UDP 69
               DHCP ---动态主机配置协议--- UDP 67 68
               DNS ---域名解析协议--- UDP/TCP 53
               telnet ----远程登录协议--- TCP 23
               SSH --- telnet + SSL--- TCP 22
传输层---端口号--- TCP / UDP
网络层--- IP地址--- IP
数据链路层--- MAC地址---以太网----交换机组建的二层网络
物理层.
 注意:除了物理层外,其他都需要封装 

 

注:上图是以太网I型帧
TCP/UDP
1, TCP是面向链接的协议,UDP 是无连接的协议;
2, TCP协议的传输是可靠的,UDP协议的传输是"尽力而为”;
3, TCP可以实现流控,而UDP不行;
4,TCP可以实现分段操作,而UDP不行;
5, TCP的传输速度较慢,消耗资源较大; UDP的传输速度较快,消耗资源小。
 

  • TCP协议和UDP协议的区别是什么
    • TCP协议是有连接的,有连接的意思是开始传输实际数据之前TCP的客户端和服务器端必须通过三次握手建立连接,会话结束之后也要结束连接。而UDP是无连接的
    • TCP协议保证数据按序发送,按序到达,提供超时重传来保证可靠性,但是UDP不保证按序到达,甚至不保证到达,只是努力交付,即便是按序发送的序列,也不保证按序送到。
    • TCP协议所需资源多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节
    • TCP有流量控制和拥塞控制,UDP没有,网络拥堵不会影响发送端的发送速率
    • TCP是一对一的连接,而UDP则可以支持一对一,多对多,一对多的通信
    • TCP面向的是字节流的服务,UDP面向的是报文的服务。

        TCP和UDP适用的场景: TCP更适用于对速度要求不高,但是对可靠性要求
较高的场景
; UDP更适用于对速度要求较高,但是对可靠性要求不高的场
景(即时类通讯)

        什么是面向连接---在传输数据之前,先适用预备的协议建立点到点的连
接,之后进行数据传输。

 

以下是标记位: 

紧急URG(URGent)---紧急标记位
当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。
当URG置1时,发送应用进程就告诉发送方的TCP有紧急数据要传送。于是发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。这时要与手中紧急指针字段配合使用。

确认ACK(ACKnowledgment)---确认标记位
仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。

推送PSH(PuSH)
接收方应该尽快将这个报文交给应用层。当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。这种情况下,TCP就可以使用推送(push)操作。这时,发送方TCP把PSH置1,并立即创建一个报文段发送出去。接收方TCP收到PSH=1的报文段,就尽快的(即“推送”向前)交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。

复位RST(ReSeT)
表示的是重置连接。当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。RST置1还用来拒绝一个非法的报文段或拒绝打开一个连接。RST也可称为重建位或重复位。

同步SYN(SYNchronization)---请求标记位
在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。因此,SYN置1就表示这是一个连接请求或连接接受报文。

终止FIN(FINis)---结束标记位
用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。

TCP的头部是可变长头部(上图就是TCP的详细图,源端口号——校验和这五横是TCP的头部)———最短20个字节

TCP传输可靠---确认,重传,排序,流控 

校验和——确保数据完整性———反码相加法———伪头部校验---12个字节 的内容一起进行校验 ---32位源IP地址,32位目标IP地址,8位保留,16 位的总长度,8位协议
 

 

 

TCP的三次握手: 

所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。

三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。

在这里插入图片描述 

 

第一次握手:客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。 

第二次握手:
服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。 

第三次握手.
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1

情景模拟 :
下述为各标签的作用,根据标点符号相互的对应。

第一次握手:你能和我建立连接吗,可以接受到我的数据吗。

​ SYN = 1 ,seq = x

第二次握手:可以建立连接,我接受到你的请求了,能接受到我的数据吗,你的数据是这个吗

​ SYN = 1 ,ACK = 1 ,seq = y ,ack = x + 1

第三次握手:我已经收到你的回复,这是我的数据,这是你的数据(用于再次核对)

​ ACK = 1 ,seq = x + 1 ,ack = y + 1

建立连接成功。

总结
就这样,把标签解释的很简单了,这样在回头去看字段的正常解释,就很简单理解啦~

各字段在TCP三次握手中的作用:

SYN:用于建立连接。

ACK:用于确定收到了请求。

seq:发送自己的数据。

ack:发送接收到的对方的数据。

作用解释:那么这些字段有什么作用呢?

seq序号、ack序号:用于确认数据是否准确,是否正常通信。

标志位:用于确认/更改连接状态。

TCP 四次挥手:
TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。

在这里插入图片描述 

四次挥手的过程如下:

第一次挥手:

客户端向服务器发送一个 FIN 数据包(FIN = 1,seq = u)主动断开连接,报文中会指定一个序列号。
告诉服务器:我要跟你断开连接了,不会再给你发数据了;
客户端此时还是可以接收数据的,如果一直没有收到被动连接方的确认包,则可以重新发送这个包。
此时客户端处于 FIN_WAIT1 状态。
第二次挥手:

服务器收到 FIN 数据包之后,向客户端发送确认包(ACK = 1,ack = u + 1),把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了
这是服务器在告诉客户端:我知道你要断开了,但是我还有数据没有发送完,等发送完了所有的数据就进行第三次挥手
此时服务端处于 CLOSE_WAIT 状态,客户端处于 FIN_WAIT2 状态
第三次挥手:

服务器向客户端发送FIN 数据包(FIN=1,seq = w),且指定一个序列号,以及确认包(ACK = 1, ack = u + 1),用来停止向客户端发送数据
这个动作是告诉客户端:我的数据也发送完了,不再给你发数据了
此时服务端处于LAST_ACK状态,客户端处于TIME_WAIT状态
第四次挥手:

客户端收到 FIN数据包 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值
此时客户端处于 TIME_WAIT 状态。
需要过一了一定时间(2MSL)之后,客户端发送确认包(ACK = 1, ack = w + 1),此时客户端才会进入 CLOSED 状态,以确保发送方的ACK可以到达接收方,防止已失效连接请求报文段出现在此连接中。
至此,完成四次挥手。
等待计时器(TIME-WAIT)

MSL(Max Segment Lifetime):最长报文段寿命

等待计时器等待的时间为2MSL,MSL一般设置为2分钟。
 

为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?
这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的连接请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可能未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。 

 为什么不能用两次握手进行连接?
我们知道,3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。
现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机S和C之间的通信,假定C给S发送一个连接请求分组,S收到了这个分组,并发 送了确认应答分组。按照两次握手的协定,S认为连接已经成功地建立了,可以开始发送数据分组。可是,C在S的应答分组在传输中被丢失的情况下,将不知道S 是否已准备好,不知道S建立什么样的序列号,C甚至怀疑S是否收到自己的连接请求分组。在这种情况下,C认为连接还未建立成功,将忽略S发来的任何数据分 组,只等待连接确认应答分组。而S在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。
 

 

 

 

 

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值