传输层tcp udp 协议

简介: 传输层tcp udp 协议

一,tcp协议

Transmission Control Protocol)传输控制协议

二,tcp 特性

  1. 工作在传输层
  2. 面向连接协议
  3. 全双工协议
  4. 半关闭
  5. 错误检查 (校验)
  6. 将数据打包成段,排序 (给数据排序 看数据来源于哪个主机 区别于ip数据包的标识)
  7. 确认机制 (对面每发一个包 我会通过报文告诉对面收到了)
  8. 数据恢复,重传
  9. 流量控制,滑动窗口

三,tcp报文

(一)端口号

1,端口号范围:

0到65535  前1024是知名端口

2,口号作用:

区别应用程序(一个端口号只能被一个程序使用)   区别协议(因为协议也是应用程序调用的,端口只能区别应用层协议)

7层协议(应用层协议)对应的程序

ftp   文件传输                                       vsftpd   FileZilla

http   超文本传输                                  nginx  apache  lls  tomcat

dhcp   自动分配ip                                dhcp

ssh                                                       openssh

安全外壳协议”(Secure Shell),是一种加密的网络传输协议,提供了一个在网络中安全地远程连接到其他计算机和设备的方法

dns  域名解析                                     bind

比如:http是超文本传输协议,apache/nginx  软件调用http协议

3,客户端端口号服务端端口号

客户端端口号:随机

服务端端口号:一般固定

4,区分应用程序

自己系统通过pid号区分应用程序  (每打开一个应用程序,会随机产生一个pid号

    两台电脑通过 端口区分应用程序

5,7层协议理解

7层协议就是规定了如何打包数据,然后将打包好的数据传到4层,要通过4层发出去,就像你寄快递,你要先打包,再选一家快递公司,然后按照早就选好的快递公司发出去。

(二)序号

(三)确认号

序号确认号 运作方式:

A向B  发送数据 序号为x      B会和A说,希望你下次发数据包的序号是x+1    A下次序号就是x+1

(四)首部长度:

TCP报文段的首部长度

(五)控制位:

描述A,B两个电脑处于什么状态

URG(紧急位):表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只有当URG=1时才有效

ACK(确认位)表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段

PSH(急切位):提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中

RST(重置位):如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段

SYN(同步位)在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段

请求建立连接

FIN(断开位)表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段

(六)窗口大小:

表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量,达到此值,需要ACK确认后才能再继续传送后面数据,由Window size value * Window size scaling factor(此值在三次握手阶段TCP选项Window scale协商得到)得出此值

自己话理解:服务端和客户端之间 会根据实际情况后自动调节数据包的大小

比如A给B发序号1    序号2    序号3                  B 回确认号3      代表 B 只能处理两条数据        后续A会发序号3,序号4

四,tcp三次握手

(一)三次握手过程

即tcp连接的过程

谁发起请求,谁就是客户端,另一方是服务端

注意:ack是确认号 ACK 是控制号

用自己的话表述三次握手过程:

1,客户端主动发起请求报文,报文序号是随机产生的x   报文中的控制位  SYN=1  表示请求建立连接

2,服务端收到请求建立连接的报文,回复一个报文,该报文也会产生随机得序号y    生成确认号    为客户端请求建立连接的报文序号+1   即x+1    ,控制位SYN=1   ACK=1   表示同意建立连接

3,客户端收到同意建立连接得报文   回复一个确认报文    会按照对方要求生成一个序号为x+1    再生成一个确认号为  对方报文序号+1(即y+1) 最后控制位为ACK=1  表示收到  对方同一连接的请求

(二),三次握手有限状态机

closed  断开连接                                                                 客户端  服务端都会存在

listen   监听(理解为随时待命,等待客户端的连接请求)                                                                                                                                                      只有服务端存在

syn-sent    发送                                                                    只有客户端存在

syn-rcvd   接收                                                                    只有客户端存在

estab   建立连接                                                                 客户端  服务端都会存在

(三)为什么要三次握手

网络环境复杂,为了确保数据能够到达,2次不够,4次多余,三次正好

五,四次挥手

(客户端,服务端都可以断开  比如计算就关闭淘宝网页,比如淘宝要维护)

(一)四次挥手过程

有两种情况

1,

此时处于半关闭状态 服务端发送ACK=1   服务端可以向客户端发送数据

2,

FIN=1 ACK=1 直接断   不能发送信息

(二)四次挥手有限状态机

(三)四次挥手注意事项

  1. CLOSED 没有任何连接状态
  2. LISTEN 侦听状态,等待来自远方TCP端口的连接请求 (服务开启 http(进程) 80端口在帮进程 看着 有没有人找 http )
  3. SYN-SENT 在发送连接请求后,等待对方确认
  4. SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
  5. ESTABLISHED 代表传输连接建立,双方进入数据传送状态
  6. FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
  7. FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
  8. TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
  9. CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
  10. LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
  11. CLOSING 双方同时尝试关闭传输连接,等待对方确认

(四)为什么要四次挥手

半关闭 怕有数据没有传输完毕

四次挥手  回ACK 是因为数据没有传送完,ACK=1 FIN=1 就是传完了   客户端还有2倍数据发送的等待时间

五,udp协议

(一)udp报文段

(二)udp 特性

1,工作在传输层,

2,提供不可靠的网络访问

3,没有面向连接协议,

4,有限的错误检查

5,传输性能高,6无数据恢复特性

(三)常用udp端口号及其功能

端口 协议 说明
69 TFTP 简单文件传输协议
111 RPC 远程过程调用,也叫注册中心(用于端口号不固定的服务端)
123 NTP 网络时间协议,也叫时间同步协议(时间不对上不了网)

六,udp tcp 区别

tcp在传输真实数据前,先要进行连接测试(三次握手)如果测试通过才会发送真实数据,否则不会发送真实数据

udp直接上来就传输数据,不管收只管发

tcp 慢 稳 面相连接

udp 快 不稳 不面相连接

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
5月前
|
网络协议 安全 网络安全
什么是TCP/UDP/HTTP?它们如何影响你的内网穿透体验?
数据的传输离不开各种协议,它们就像现实世界中的交通规则,规定了数据如何打包、寻址、传输和接收。对于使用内网穿透的用户来说,理解TCP、UDP和HTTP这些基础协议的特点,能帮助你更好地理解其性能表现,并选择最适合的配置方案。
|
7月前
|
网络协议 安全 网络安全
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
553 2
|
7月前
|
网络协议 开发者
探讨UDP协议中connect函数的作用及影响
总结来看,虽然UDP是无连接的,`connect()` 函数的使用在UDP编程中是一种可选的技术,它可以带来编程上的便利和某些性能上的改进,同时它改变的是程序逻辑上的行为,而非UDP协议本身的无连接特性。在实际应用中,根据通信模式和需求的不同,开发者可以根据情况选择是否调用 `connect()` 函数。
313 8
|
9月前
|
监控 网络协议 视频直播
UDP协议(特点与应用场景)
UDP(用户数据报协议)是传输层的一种无连接协议,具有简单高效、低延迟的特点。其主要特点包括:无连接(无需握手)、不可靠传输(不保证数据完整性)、面向数据报(独立传输)。尽管UDP不如TCP可靠,但在实时通信(如语音通话、视频会议)、在线游戏、多媒体流媒体(如直播、点播)及网络监控等领域广泛应用,满足了对速度和实时性要求较高的需求。
1409 19
|
10月前
|
网络协议
为何UDP协议不可靠?DNS为何选择UDP?
总的来说,UDP和TCP各有优势,选择哪种协议取决于应用的具体需求。UDP可能不如TCP可靠,但其简单、快速的特性使其在某些场景下成为更好的选择。而DNS就是这样的一个例子,它利用了UDP的优势,以实现快速、高效的名字解析服务。
545 14
|
10月前
|
网络协议 Java 开发工具
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
602 1
|
缓存 网络协议
Jmeter如何对UDP协议进行测试?
`jmeter-plugins`是JMeter的插件管理器,用于管理和组织所有插件。访问[官网](https://jmeter-plugins.org/install/Install/)下载并放置于`lib/ext`目录下,重启JMeter后可在“选项”中看到插件管理器。
488 1
Jmeter如何对UDP协议进行测试?
|
XML JSON 算法
【JavaEE】——自定义协议方案、UDP协议
自定义协议,序列化,xml方案,json方案,protobuffer方案,UDP协议,校验和,比特翻转,CRC算法,md5算法
|
监控 网络协议 网络性能优化
不再困惑!一文搞懂TCP与UDP的所有区别
本文介绍网络基础中TCP与UDP的区别及其应用场景。TCP是面向连接、可靠传输的协议,适用于HTTP、FTP等需要保证数据完整性的场景;UDP是无连接、不可靠但速度快的协议,适合DNS、RIP等对实时性要求高的应用。文章通过对比两者在连接方式、可靠性、速度、流量控制和数据包大小等方面的差异,帮助读者理解其各自特点与适用场景。
|
网络协议 算法 网络性能优化