传输层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 快 不稳 不面相连接

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1天前
|
网络协议 JavaScript 安全
深入浅出TCP 与 UDP
深入浅出TCP 与 UDP
12 0
|
4天前
|
缓存 网络协议 算法
TCP传输协议与UDP传输协议的特点与分析
网络协议如同人与人之间相互交流是需要遵循一定的规则(如语言)一样,计算机之间能够进行相互通信是因为它们都共同遵守一定的规则,即网络协议。 OSI参考模型和TCP/IP模型在不同的层次中有许多不同的网络协议,如图所示: 我们今天主要讨论的是传输层的协议,即考虑应用程序之间的逻辑通信。简单来说就是数据该如何发送给其他机器;
|
6天前
|
监控 网络协议 安全
TCP和UDP面试题提问
TCP是一种面向连接、可靠的协议,提供确认和重传机制,确保数据完整性和可靠性,适合网页浏览、邮件收发等。UDP则是无连接、轻量级协议,不保证数据可靠性,但适合实时应用如语音视频通话和在线游戏,追求低延迟。
|
13天前
|
移动开发 网络协议 视频直播
25.Python 网络编程:TCP和UDP编程
25.Python 网络编程:TCP和UDP编程
19 2
|
13天前
|
网络协议 Linux Windows
测试端口是否开放 tcp端口 udp端口 测试服务器端口连通性
测试端口是否开放 tcp端口 udp端口 测试服务器端口连通性
|
18天前
|
网络协议 Java
Java的Socket编程:TCP/IP与UDP深入探索
Java的Socket编程:TCP/IP与UDP深入探索
19 0
|
15天前
|
网络协议 应用服务中间件 网络性能优化
解析TCP /UDP协议的 socket 调用的过程
【6月更文挑战第2天】该文介绍了传输层的两种主要协议TCP和UDP的区别。TCP是面向连接、可靠的,提供顺序无错的数据传输,而UDP则是无连接、不可靠的,不保证数据顺序或不丢失。
|
20天前
|
网络协议 网络性能优化
TCP和UDP协议的特点和用途
TCP是面向连接、可靠的传输协议,提供按序交付和流量控制,适合网页浏览、邮件及文件传输等需要高可靠性的场景,例如在线购物交易数据的准确传输。而UDP是无连接、不可靠但速度更快的协议,具有较小的头部开销,常用于实时应用如在线游戏和语音通话,其低延迟特性适合对即时性要求高于准确性的场合,如多人在线游戏中的即时互动。
|
20天前
|
网络协议 安全 程序员
网络原理-UDP/TCP详解
网络原理-UDP/TCP详解
网络原理-UDP/TCP详解
|
21天前
|
网络协议
TCP/UDP网络编程
TCP/UDP网络编程
20 2