TCP与UDP的原理
传输协议的作用是,给应用层程序提供数据传输的通道。
TCP(传输控制协议)它是面向连接的,可靠的传输层协议。传输速率比UDP慢。
TCP的报文格式:
源端口及目的端口表是:从那个进程来到哪个进程去。
序列号表示这个数据是全体数据的第几个字节开始的。
这里的ACK确认号码表示已经收到了确认号之前的数据了,希望下一个序列号码是从这个ACK号码开始。标志位ack=1时有效。
偏移字节(首部长度)表示IP头部的大小。
6个标志位:URG置1表示紧急指针有效
ACK:置1表示已收到发送的报文
PSH:置1表示立即此报文从缓冲区中取出
RST:置1处理异常连接,表示应当重新建立连接
SYN:置1标识请求建立连接,带SYN的报文都称为同步报文。
FIN:置1表示将要断开连接了,称为结束报文。
窗口大小:用来做流量控制,用来传递服务器的窗口有多大。
校验和:用来做循环冗余校验来检验数据的完整性。
紧急指针:用来指向需要紧急处理的报文,URG标志位需为1.
UDP
用户数据协议:无连接,不可靠:没有重传机制和确认机制。但是传输的速率快。
报文格式:
数据包长度:顾名思义表示整个数据包的长度。
校验值:如果校验和出错会直接丢弃报文。
tcp三次握手
为什么建立的是三次握手而不是两次或者四次呢?
原因1:tcp要确保双方的收发能力,如果只有两次握手不能确定客户端的接收能力。
原因2:如果进行两次连接,客户端没有变化任然需要服务器应答后才进入established,而服务端这需要收到连接请求就进入了established。这样的话,当客户端发送第一个请求报文但是因为种种原因,没有到达服务端,此时客户端发送第二个请求报文到服务端建立连接并且完成数据传输。此时第一个报文才发送到服务端。而此时客户端已经closed了那么会会造成服务端的资源浪费。
第一次握手客户端发送SYN报文,随机产生一个序列号x。
第二次握手服务端发送SYN,ACK报文,随机产生一个序列号y,发送确认序列号x+1。
第三次握手客户端发送ACK报文以及确认序列号。
如果第三次握手失败:
服务端会根据重传机制等待3,6,12秒后重新发送SYN与ACK报文,以便客户端重新进行第三次握手。
客户端在第三次握手失败,客户端是感知不到的,当他发送数据的时候服务端会发送一个RST标志位的报文,让客户端感知连接发生了错误。
四次挥手:
第一次挥手:客户端向服务端发送FIN,序列号为u的报文请求断开连接。
第二次挥手:服务端回复ACK,序列号为v,确认序号为u+1的报文表示收到。
但是此时服务端还没有处理完数据。
第三次挥手:服务端处理完数据后,发送FIN,ACK,序列号为w,确认序号为u+1的报文
表示可以断开连接了。
第四次挥手:客户端向服务端发送ACK,序列号为u+1,确认序号为w+1的报文。此时服务端关闭连接。但是客户端还要等2MSL(两个最大报文生存时间)才关闭。
第四次挥手失败:服务端因为重传机制没有等到第四次挥手后便会重新第三次挥手但是如果此时已经过了2MSL后,客户端已经关闭了连接,此时服务端将一直发送第三次挥手。、
但是tcp有保活机制,但是一般保活机制比较长默认2小时没有收到tcp数据,就会进行检测,检测间隔75秒。检测数次无响应后关闭tcp连接。
第二次挥手:注意这里服务端不会因为重传机制重新发送第二次挥手,它之后是直接发送第三次挥手的,客户端这里,如果收不到第二次挥手就无法进入FIN_WAIT_2,就无法接收第三次挥手,只能重新进行第一次挥手。
TCP与UDP的原理相关推荐
- TCP和UDP协议的区别以及原理
TCP和UDP协议的区别以及原理 该文章是学习了B站up主的视频做的总结,讲的很通俗易懂,首先感谢博主的分享.视频地址:https://www.bilibili.com/video/BV1kV411j ...
- 图文并茂,讲解TCP和UDP协议的原理以及区别
TCP和UDP协议的区别以及原理 最近重新认知了一下TCP和UDP的原理以及区别,做一个简单的总结. 一.作用 首先,tcp和udp都是工作在传输层,用于程序之间传输数据的.数据一般包含:文件类型,视 ...
- 详细讲解网络协议:TCP和UDP什么区别?
该文章是学习了 B 站 up 主的视频做的总结,讲的很通俗易懂,首先感谢博主的分享.视频地址:https://www.bilibili.com/video/BV1kV411j7hA/?spm_id_f ...
- 了解TCP协议,IP协议、ICMP协议和ARP协议(TCP报文,TCP的分成管理,TCP与UDP,TCP的三次握手四次挥手原理)
文章目录 了解TCP/IP协议 TCP报文格式 TCP/IP 的分层管理 TCP与UDP TCP的三次握手与四次挥手 为什么要三次握手? 为什么要四次挥手? IP数据包格式 ICMP协议 ICMP协议 ...
- 【Java 网络编程】网络通信原理、TCP、UDP 回显服务
一.网络发展历史 互联网从何而来? 这要追溯到上个世纪 50 - 60 年代,当时正逢美苏争霸冷战,核武器给战争双方提供了足够的威慑力,想要保全自己,就要保证自己的反制手段是有效的. 如何保证能够反击 ...
- 交换机 链路层无法udp通讯_一文读懂计算机底层网络原理,包括TCP、UDP、header,什么是包、帧、段等关键问题...
说到计算机网络原理,大家可能马上联想到,七层协议,传输层,链路层,三次握手四次挥手:前端的同学,还会想到我们用Crome F12的network里面的headers,状态码等.后端同学可能会联想到,抓 ...
- 用pppoe封装的ppp帧头部不包含标志_一文读懂计算机底层网络原理,包括TCP、UDP、header,什么是包、帧、段等关键问题...
说到计算机网络原理,大家可能马上联想到,七层协议,传输层,链路层,三次握手四次挥手:前端的同学,还会想到我们用Crome F12的network里面的headers,状态码等.后端同学可能会联想到,抓 ...
- 深入了解ESP8266WIFI模块的工作原理及特点---AT指令详解---透传概念----TCP和UDP的特点与区别-嵌入式软件面试常问
ESP8266-AT指令--透传--TCP-UDP 我们来先认识一下ESP8266模块: 模块实物图 资源介绍 原理图 功能介绍 无线组网 SoftAP: Station: SoftAP + stat ...
- UDP协议为什么比TCP协议快的原理
一直以来,大家知道相对于TCP协议,UDP协议快,但是具体快在哪里呢,研究了一番,记录下来供大家学习. 1.工作位置: 首先,在OSI七层模型中,TCP,UDP工作在传输层,使源端主机和目标主机上提供 ...
最新文章
- 汇编试验六:实践课程中的程序
- 如何使用React Hook
- 前两年在MSDN里找到的HTC示例,一直没用过,先在这里存个备份
- 【OpenCV 例程200篇】91. 高斯噪声、瑞利噪声、爱尔兰噪声
- [翻译]Django tutorial, part 1: Models
- HNU实验五 小希与火车 基于神经网络的垃圾分类
- scala的list源码解密
- Hadoop-RPC底层实现与解析
- html基础之select ,datalist与details的异同
- 51单片机汇编语言实验及代码
- 深度学习图像分割:U-Net 体系结构
- 概率机器人书 电子版
- 谷歌浏览器86版_Google 谷歌浏览器 Chrome v87.0.4280.66 Win Mac Linux 安卓等稳定版
- Web前端学习上----(案例实现)
- 汉高2020财年第三季度实现强劲的有机销售额增长,增幅达3.9%
- 【慕课网】前端零基础入门---步骤一:页面结构层HTML---03-HTML表单
- 数据结构单链表:指定结点的前插、后插操作
- Java判断本周属于该年的第几周
- 当 Rainbond 遇上龙蜥!小龙带你玩转一站式云原生,点击开启
- # ffmpeg 将多幅图片压缩成视频 h264 avi
热门文章
- Windows10官方镜像-U盘安装盘制作
- U3D_Maze开发手记
- 总结python之excel write(row,col,data)
- 高斯判别分析GDA的简单python实现
- 运维知识体系-V3.0
- /phalcon.zep.c:130892: error: ‘ZEND_FE_END’ undeclared here (not in a function)
- 服务器更新宕机-自我检讨
- 香港室内设计公司【Junee】申请纳斯达克IPO上市,募资2500 万美元
- OPNET计算机网络仿真 实验作业1 - 网络拓扑创建
- Docker Cgroup资源配置(CPU、内存、磁盘)