首页 > 其他分享 >TCP三次握手和四次挥手;OSI七层协议有哪七层,每层有哪些;TCP和UDP的区别?UDP用在哪里了?

TCP三次握手和四次挥手;OSI七层协议有哪七层,每层有哪些;TCP和UDP的区别?UDP用在哪里了?

时间:2023-08-08 15:56:23浏览次数:31  
标签:协议 UDP 请求 七层 TCP 连接 服务端 客户端

TCP三次握手和四次挥手;OSI七层协议有哪七层,每层有哪些;TCP和UDP的区别?UDP用在哪里了?

TCP三次握手和四次挥手

# tcp协议---》处于osi7层协议的传输层,可靠连接,使用三次握手,四次挥手保证了可靠连接,数据不会丢失

三次握手(Three-Way Handshake):

-SYN:SYN=1 表示要建立连接
-ACK:ACK=1 表示我确认收到
-seq:随机数,建立连接无论客户端还是服务端要建立连接就要要携带
-ack:回应请求就要加1返回
-FIN:FIN=1 表示断开连接

# 建立连接过程中服务端和客户端的状态
LISTEN:等待从任何远端TCP 和端口的连接请求
SYN_SENT:发送完一个连接请求后等待一个匹配的连接请求。
SYN_RECEIVED:发送连接请求并且接收到匹配的连接请求以后等待连接请求确认。
ESTABLISHED:表示一个打开的连接,接收到的数据可以被投递给用户。连接的数据传输阶段的正常状态。

-第一次:你好(SYN=1),我是queque(seq=随机数) 
    客户端:'SYN_SENT'状态
    服务端:没收到'LISTEN'状态,收到了是'SYN_RCVD'状态
-第二次:收到(ACK=1),是queque啊(ack=随机数+1),你好(SYN=1),我是彭于晏(seq=随机数1)
    服务端:'SYN_RCVD'状态
    客户端:没收到服务端返回的第二次:'SYN_SENT'状态,一旦收到就是'ESTABLISHED'
-第三次:收到(ACK=1),彭于晏你好呀(ack=随机数1+1)
    客户端:连接建好的状态 'ESTABLISHED'
    服务端:收到后,处于'ESTABLISHED'

-大白话:三次握手
    第一次:客户端向服务端发送建立连接请求,【携带一个随机数】(SYN=1,seq=随机数)
    第二次:服务端回应客户端的建立连接请求(ACK=1,ack=随机数+1),服务端发送建立连接请求(SYN=1,seq=另一个随机数)
    第三次:客户端回应服务端的建立连接请求(ACK=1,ack=另一个随机数+1)

TCP 四次挥手(Four-Way Handshake):
# 断开连接过程中服务端和客户端的状态
FIN_WAIT_1:等待远端TCP 的连接终止请求,或者等待之前发送的连接终止请求的确认。
FIN_WAIT_2:等待远端TCP 的连接终止请求。
CLOSE_WAIT:等待本地用户的连接终止请求。
CLOSING:等待远端TCP 的连接终止请求确认。
LAST_ACK:等待先前发送给远端TCP 的连接终止请求的确认(包括它字节的连接终止请求的确认)
TIME_WAIT:等待足够的时间过去以确保远端TCP 接收到它的连接终止请求的确认。

-第一次:客户端向服务端发起断开连接的请求(FIN=1,seq=随机数)
	  客户端:'FIN_WAIT_1'状态
    服务端:没收到'ESTABLISHED'状态,收到了是'CLOSE_WAIT'状态
-第二次:服务端收到后,回复这个请求(ACK=1,ack=随机数+1)
    服务端:'CLOSE_WAIT'状态
    客户端:没收到服务端返回的第二次:'FIN_WAIT_1'状态,一旦收到就是'FIN_WAIT_2'
-第三次:服务端向客户端发起断开连接的请求(FIN=1,seq=另一个随机数,ACK=1,ack=随机数+1)
		服务端:'LAST_ACK'状态
    客户端:没收到服务端返回的第三次:'FIN_WAIT_2'状态,一旦收到就是'TIME_WAIT'
第四次:客户端收到后,回复这个请求(ACK=1,ack=另一个随机数+1,seq=随机数+1)


# 洪水攻击 ddos:
同一时间有大量的客户端请求建立连接 会导致服务端一直处于SYN_RCVD状态。攻击者会向目标系统发送大量的请求或数据,使其资源(如带宽、计算能力、存储等)耗尽,导致系统无法正常响应合法用户的请求。



# 为什么客户端最后还要等待2MSL?
MSL(Maximum Segment Lifetime),TCP允许不同的实现可以设置不同的MSL值。

保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器。
防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样新的连接中不会出现旧连接的请求报文。

# 为什么建立连接是三次握手,关闭连接确是四次挥手呢?
建立连接的时候,服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。

# 如果已经建立了连接,但是客户端突然出现故障了怎么办?
TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

https://www.cnblogs.com/liuqingzheng/p/16124319.html

OSI七层协议,哪七层,每层有哪些

七层划分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
五层划(TCP/IP五层协议)分为:应用层、传输层、网络层、数据链路层、物理层。
四层划分为:应用层、传输层、网络层、网络接口层。
OSI(Open Systems Interconnection)是一种用于计算机网络通信的通信协议体系结构,它将网络通信划分为七个不同的层次。每个层次都负责特定的功能,并且相互之间有明确定义的接口。下面是 OSI 七层协议及其功能:

1. 物理层(Physical Layer):
   - 硬件层面,处理物理连接和传输媒介。
   - 主要任务是发送高低电压(电信号),高电压对应数字1,低电压对应数字0
   - 常见的物理层标准包括以太网、Wi-Fi、USB、蓝牙、光纤等。

2. 数据链路层(Data Link Layer):
   - 主要功能是对电信号做分组
   - 常见的数据链路层协议包括以太网、PPP(点对点协议)等。
   - PPP:点对点协议(Point to Point Protocol,PPP)为在点对点连接上传输多协议数据包提供了一个标准方法
   - ARP:地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议
   - ethernet规定一组电信号构成一个数据报,叫做'帧',每一数据帧分成:报头head和数据data两部分 
   - ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即Mac地址。每块网卡出厂时都被烧制上一个世界唯一的Mac地址

3. 网络层(Network Layer):
   - 处理数据包在网络中的路由和转发。它负责为数据包选择合适的路径,并提供 网络地址和路由协议,例如IP(Internet Protocol)。
   - icmp协议:ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用
   - 固定每一个接入互联网的计算机都必须要有一个IP地址,IPv4地址之外,还有IPv6地址
   - 一个IP地址可以定位一个局域网,一个mac地址定位局域网中得一台计算机, ip+mac地址可以定位一个局域网中得唯一一台计算机。是因为有一个ARP协议,专门负责把IP地址解析成mac地址,也就说有了IP地址,就有了mac地址
        '''一个IP可以定位到世界范围内独一无二的一台计算机'''

4. 传输层(Transport Layer):
   - 提供端到端的可靠数据传输和错误恢复。
   - 负责在通信的两个设备之间建立、维护和终止数据传输的连接。
   - 常见的传输层协议包括 TCP(传输控制协议)、UDP(用户数据报协议)、端口协议
   - 端口范围0-65535,0-1023为系统占用端口,1024-8000之间的端口,一般是常用软件的端口,我们自己开发的软件,端口最后使用8000之后的
   - ip+port:定位世界范围内独一无二的一台计算机正在运行的一个应用程序(在一台计算机中,同一时刻,端口不能重复,因为一个端口就代码这台计算机上的一个应用程序')
   - Django 8000 flask 5000 mysql 3306 redis 6379

5. 会话层(Session Layer):
   - 管理应用之间的会话连接。
   - 提供会话控制和同步功能,确保数据的正确传输和数据的同步。
   - 通常在操作系统中由应用程序来实现,不像其他层有明确的协议。

6. 表示层(Presentation Layer):
   - 处理数据的表示和转换,以确保数据的可读性。
   - 负责数据的加密、压缩、解压缩等功能,使得应用层可以直接处理数据。
   - HTTPS中的加密是在表示层实现的,确保数据在网络中的传输是安全的
   - 通常在操作系统中由应用程序来实现,不像其他层有明确的协议。

7. 应用层(Application Layer):
   - 提供直接给用户使用的应用服务,是用户直接接触的最高层。我们程序员其实就在应用层
   - 包括各种应用程序,如电子邮件、文件传输、远程登录等。
   - 如果是客户端程序,协议想用什么就用什么,因为客户端是我们自己写的;如果是浏览器,协议就不能随意用了,就要按照浏览器规定的协议.
   - 常见的应用层协议包括 HTTP(超文本传输协议)、SMTP(简单邮件传输协议)、FTP(文件传输协议)、DNS等。

TCP和UDP的区别?UDP用在哪里了?

TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)是两种不同的传输层协议,它们在数据传输和连接建立方面有以下主要区别:
-tcp是面向连接的可靠协议
-udp无连接的不可靠协议
-都是处于传输层
-运用场景
	udp:一些聊天,dns协议用的udp协议
	tcp:http  mysql,redis客户端服务端通信

标签:协议,UDP,请求,七层,TCP,连接,服务端,客户端
From: https://www.cnblogs.com/10086upup/p/17614582.html

相关文章

  • LinuxUDP通讯
    目录前言一、UDP通讯1.UDP通讯概述2.UDP的特点3.UDP的应用二、UDP基本通讯1.socket函数2.bind函数2.1主机字节序和网络字节序2.2点分制十进制转换3.recvfrom接收4.服务端完整代码5.sendto发送函数6.客户端完整代码三、TFTP文件接收程序1.TFTP概述2.TFTP通讯过程3.TFTP客户端四、......
  • Siemens 西门子S7-1200PLC与组态王TCP通讯
    1.0首先打开组态王软件,这里测试用的是6.6版本的2.0点击菜单栏的新建项目,然后下一步 3.0这一步是选择项目存放的目录,找到存放位置就下一步 4.0接下来就是设置工程名称了,自己根据项目定义 5.0完成以上步骤,你就会看到如下图的项目,然后我们选择菜单栏点击开发 6.0......
  • Siemens 西门子PLC的TCP通讯(不同项目下)①--TSEND_C指令
    本期说一下,不同项目下的,连个西门子1200的TCP通讯,这次我们用TSEND_C和TRCV_C组合使用,这次先了解下TSEND_C指令是大概啥样的1.0从右边指令栏--通信--开放式用户通讯--其他,选择TSEND_C拖动到程序1中,如下图 2.0下面说下具体这个指令块的参数设置REQ:指的是上升沿触发,发送作业,跟......
  • Siemens 西门子PLC的TCP通讯(不同项目下)②--TRCV_C指令
    上期主要了解了TSEND_C指令的各项参数的意义,隐藏参数LEN等可以默认本期将了解另一个配套组合指令块TRCV_C,这是个接收指令块,大概呢跟发送指令TSEND_C差不多1.0从右边指令栏--通信--开放式用户通讯--其他,选择TRCV_C拖动到程序1中,如下图 2.0下面说下具体这个指令块的参数设置......
  • tcp 三次握手和四次挥手
    目录1tcp三次握手和四次挥手四次挥手:洪水攻击:2osi七层协议,哪七层,每层有哪些,TCP/IP五层结构3tcp和udp的区别?udp用在哪里了?1tcp三次握手和四次挥手-TCP是可靠连接,使用三次握手,四次挥手保证了可靠连接,数据不会丢失-SYN:SYN=1表示要建立连接-FIN:表示断开连接-ACK:ACK=1表示......
  • Linux 网络抓包工具 Tcpdump
    Linuxtcpdump命令示例tcpdump是一个功能最强大且广泛使用的命令行数据包嗅探或数据包分析工具,用于捕获或过滤在特定接口上接收或传输的TCP/IP数据包。Tcpdump在许多Linux/Unix操作系统中都是现成的。此外,它提供了一个宝贵的选项,可以将捕获的数据包保存到文件中以供将来分析......
  • 用TCP/IP给你讲数据通信过程,太会玩了
    下午好,我是老杨。前段时间搞了篇网安基础知识,一大堆人看了以后来问我,怎么学。细细聊下来,好多人连网络通信的基础知识都没打好,这绝对是还没学会走路,就想开始跑了。今天搞点有意思的,来一篇技术趣文。是个网工就该知道的TCP/IP,就上面这张经典图,人手一份了属于是。但我今天要利用TCP/IP......
  • udp发送上位机(1)
    发送彩色视频RGB888时,在上位机,通过BGR2BGR565转换为16位数据,再传输时加上行号,在DMA里也要对读出的数据进行高低位的变换,组成RGB565格式如下图所示,在灰度图时将每帧刷新改为了每一行刷新,这是因为在彩色图像时,刷新一帧的时间大于2ms,而灰度时为0.7ms,这就会导致在刷新的时候,新的数据......
  • scp tcpdump 多网卡绑定 永久修改网络相关配置文件
    scptcpdump多网卡绑定 永久修改网络相关配置文件网卡[root@localhost~]#vim/etc/sysconfig/network-scripts/ifcfg-ens33BOOTPROTO=static     //网卡获取地址模式ONBOOT=yes        //开机是否自启动​​IPADDR=192.168.91.105   ......
  • [工程开发]当我们写一个tcp服务端的时候,我们在写什么?(一)
    当我们写一个tcp服务器和客户端的时候,我们在写什么?(一)本篇只聊服务端。最近想搞一个服务器的协议,然后捏,简单搓个tcp服务器协议看看效果,主要是最近实在是没事干,闲得没事搓个服务器看看,当然了,Qt中的我已经有了,现在我需要的是一个C#上的服务器。当然了,我写这个服务器不会是从很学术......