传输层tcp udp 协议

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 传输层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 快 不稳 不面相连接

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7天前
|
网络协议 算法 网络性能优化
|
1天前
|
缓存 负载均衡 网络协议
面试:TCP、UDP如何解决丢包问题
TCP、UDP如何解决丢包问题。TCP:基于数据块传输/数据分片、对失序数据包重新排序以及去重、流量控制(滑动窗口)、拥塞控制、自主重传ARQ;UDP:程序执行后马上开始监听、控制报文大小、每个分割块的长度小于MTU
|
17天前
|
网络协议 前端开发 物联网
TCP和UDP区别?
本文首发于微信公众号“前端徐徐”,详细介绍了TCP和UDP两种传输层协议的核心概念、连接性和握手过程、数据传输和可靠性、延迟和效率、应用场景及头部开销。TCP面向连接、可靠、有序,适用于网页浏览、文件传输等;UDP无连接、低延迟、高效,适用于实时音视频传输、在线游戏等。
31 1
TCP和UDP区别?
|
9天前
|
Web App开发 缓存 网络协议
不为人知的网络编程(十八):UDP比TCP高效?还真不一定!
熟悉网络编程的(尤其搞实时音视频聊天技术的)同学们都有个约定俗成的主观论调,一提起UDP和TCP,马上想到的是UDP没有TCP可靠,但UDP肯定比TCP高效。说到UDP比TCP高效,理由是什么呢?事实真是这样吗?跟着本文咱们一探究竟!
36 10
|
19天前
|
网络协议 网络性能优化 C#
C# 一分钟浅谈:UDP 与 TCP 协议区别
【10月更文挑战第8天】在网络编程中,传输层协议的选择对应用程序的性能和可靠性至关重要。本文介绍了 TCP 和 UDP 两种常用协议的基础概念、区别及应用场景,并通过 C# 代码示例详细说明了如何处理常见的问题和易错点。TCP 适用于需要可靠传输和顺序保证的场景,而 UDP 适用于对延迟敏感且可以容忍一定数据丢失的实时应用。
25 1
|
2月前
|
存储 网络协议 算法
UDP 协议和 TCP 协议
本文介绍了UDP和TCP协议的基本结构与特性。UDP协议具有简单的报文结构,包括报头和载荷,报头由源端口、目的端口、报文长度和校验和组成。UDP使用CRC校验和来检测传输错误。相比之下,TCP协议提供更可靠的传输服务,其结构复杂,包含序列号、确认序号和标志位等字段。TCP通过确认应答和超时重传来保证数据传输的可靠性,并采用三次握手建立连接,四次挥手断开连接,确保通信的稳定性和完整性。
83 1
UDP 协议和 TCP 协议
|
3月前
|
消息中间件 网络协议 算法
UDP 和 TCP 哪个更好?
【8月更文挑战第23天】
157 0
|
25天前
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
31 0
Linux C/C++之TCP / UDP通信
|
28天前
|
存储 网络协议 Java
【网络】UDP和TCP之间的差别和回显服务器
【网络】UDP和TCP之间的差别和回显服务器
56 1
|
1月前
|
存储 网络协议 算法
更深层次理解传输层两协议【UDP | TCP】【UDP 缓冲区 | TCP 8种策略 | 三次握手四次挥手】
UDP和TCP各有所长,UDP以其低延迟、轻量级的特点适用于对实时性要求极高的应用,而TCP凭借其强大的错误检测、流量控制和拥塞控制机制,确保了数据的可靠传输,适用于文件传输、网页浏览等场景。理解它们的工作原理,特别是UDP的缓冲区管理和TCP的8种策略,对于优化网络应用的性能、确保数据的高效和可靠传输至关重要。开发者在选择传输层协议时,应根据实际需求权衡利弊,合理利用这两项关键技术。
52 5