1、UDP

  UDP协议是面向无连接的,即不需要在正式传递数据前先链接双方,UDP协议只是数据报文的搬运工,不保证有序且不丢失的传递到对端,且UDP协议无任何控制流量的算法,UDP相对于TCP更加轻便。

  特征:

  • 面向无连接:在发送端,应用层将数据传递给传输层的UDP协议,UDP只会给数据增加一个UDP头标识下是UDP协议,然后就传递给网络层了;在接收端,网络层将数据传递给传输层,UDP只是去除IP报文头就传递给了应用层。
  • 不可靠性:UDP协议的不可靠性主要表现在以下几个方面:
    • 无连接,想发就发
    • 收什么数据就传什么数据且不会备份,也不会关新对端是否正确接收
    • 无拥塞控制,一直会以恒定的速度发送数据,即使网络不好也不会调整速率,所以当网络不好时可能导致丢包
  • 高效:UDP头部开销小,只有8个字节。由两个16位的端口号[源端口(可选)+目标端口]+整个报文的长度和整个数据报文的校验+IPv4(可选)组成
  • 传输方式:单播(一对一)、多播(一对多)、广播(多对多)
  • 适合使用场景:实时性要求高的地方,如直播、王者荣耀等

2、TCP

1)头部

  • Sequence Number:这个序号保证了TCP传输的报文都是有序的,对端可以通过序号顺序拼接报文
  • Acknowledgement number:次序号表示数据接收端期望接受的下一字节编号是多少,同时也表示上一个序号的数据已到达
  • window size:窗口大小,表示还能接收多少字节的数据,用于流量控制
  • 标识符:
    • URG=1:表示本数据报文的数据部分包含紧急信息,是一个高优先级数据报文段,此时紧急指针有效
    • ACK=1:表示确认号字段有效,TCP规定连接后传送的所有报文ACK=1
    • PSH=1:表示接收端应该立即将数据PUSH给应用层,而不是等缓存区满之后再提交
    • RST=1:表示当前TCP连接出现严重的问题,可能需要重新建立连接
    • SYN=1:当SYN=1,ACK=0时,表示当前报文段是一个连接请求报文;当SYN=1,ACK=1时,表示当前报文段是一个同意连接请求的报文
    • FIN=1:表示此报文段是一个释放连接请求的报文段

2)状态机

性能指标RTT:表示发送端发送数据到接收到对端数据所需要的往返时间

三次握手:

  TCP协议中,主动发起请求的为客户端,被动连接的是服务端,连接后双方都能发送和接收数据,因此TCP是一个双全工协议

  • 客户端发送连接请求到服务端,该报文段中包含自身的数据通讯初始序号,请求发送后,客户端便进入SYN-SENT状态
  • 服务端收到连接请求报文后,如果同意连接,则发送一个应答,该应答中也包含自身数据通讯初始序号,发送完后进入SYN-RECEIVED状态
  • 客户端收到连接同意应答后,还需要向服务端发送一个确认报文,发完后进入ESTABILISED状态,服务端接收到后也进入ESTABLISHED状态

  TCP需要三次握手的原因:防止失效的连接请求段被服务端接收从而影响错误

四次挥手

  • 若客户端A认为发送数据完成,则他需要向服务端B发送连接释放请求
  • B收到释放请求之后,会告诉应用层要释放TCP连接,然后会发送ACK包,并进入CLOSE-WAIT状态,表示A到B的连接已经释放,不再接收A发的数据了,但由于TCP连接是双向的,所以B仍然可以给A发送数据
  • 若B此时还没发送完数据会继续发送,完毕后会向A发送释放连接请求,然后B进入LAST-ACK状态
  • A收到释放请求后,向B发送确认应答,此时A进入TIME-WAIT状态,该状态会持续2MSL(最大段生存周期)时间,若该时间段内无B的重发请求就会进入CLOSED状态,当B收到确认应答后也进入CLOSED状态

  A会进入TIME-WAIT状态等待2SML时间的原因:为了保证B能收到A的应答,若A发完确认后直接进入CLOSED状态,如果确认应答因为网络问题一直没送达,就会造成B不能正常关闭。

传输层协议之TCP/UDP的更多相关文章

  1. 传输层协议(tcp ip和udp 三次握手 四次握手)

    1 TCP/IP协议介绍 TCP/IP协议:Transmission Control Protocol/Internet Protocol 传输控制协议/因特网互联协议. TCP/IP是一个Proto ...

  2. Google 打算用 QUIC 协议替代 TCP/UDP

    有句话叫做一流企业定标准.二流企业做品牌.三流企业卖技术.四流企业做产品.Google 似乎在冲着一流企业的目标迈进.去年,Google 已经从以 SPDY 为基础的 HTTP 协议 16年 来的首个 ...

  3. 传输层协议TCP和UDP

    本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...

  4. Android程序员必知必会的网络通信传输层协议——UDP和TCP

    1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯技术这一块)的开发者来说,网络编程是基础中的基础,只有更好地理解相关基础知识,对于应用层的开发才能做到游刃有余. 对于Android ...

  5. java 网络通信传输层协议——UDP和TCP

    本文原文由作者“zskingking”发表于:jianshu.com/p/271b1c57bb0b,本次收录有改动. 1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯网专注的即时通 ...

  6. TCP/IP 协议图--传输层中的 TCP 和 UDP

    TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP. TCP 是面向连接的.可靠的流协议.流就是指不间断的数据结构,当应用程序采用 TCP 发送消息时,虽然可以保证发送的顺序,但 ...

  7. 浅谈传输层协议TCP和UDP

    在当今因特网的层次结构中,传输层的协议主要有两种,其一为Transmission Control Protocol,即TCP:其二为User Datagram Protocol,即UDP. 1.TCP ...

  8. TCP/IP中的传输层协议TCP、UDP

    TCP提供可靠的通信传输,而UDP则常用于让广播和细节控制交给应用的通信传输. 传输层协议根据IP数据报判断最终的接收端应用程序. TCP/IP的众多应用协议大多以客户端/服务端的形式运行.客户端是请 ...

  9. 稳住,传输层里的TCP与UDP协议

    传输层协议 1.TCP协议介绍及报文格式 2.TCP三次握手三次挥手 3.UDP协议介绍 1.传输层有两个协议:TCP(传输控制协议)  UDP(用户数据协议) . TCP是面向连接的,可靠的进程到进 ...

随机推荐

  1. 手机APP测试——Perfecto

    基于 Perfecto mobile cloud 的移动端自动化测试实践 本文将介绍 Pefecto mobile cloud 在移动端自动化测试的应用. Pefecto 将真实移动设备放到 clou ...

  2. golang入门案例之http client请求

    发请求,接收接送,并解析 package main import ( "fmt" "net/http" "io/ioutil" " ...

  3. Nova 启动虚拟机流程解析

    目录 文章目录 目录 前言 从请求说起 nova-api service 阶段 前言 Nova 启动虚拟机的东西太多,持续更新- 从请求说起 无论是通过 Dashboard 还是 CLI 启动一个虚拟 ...

  4. enumerable 可枚举 属性

    一个对象的可枚举属性会在for...in中被访问到 (或是类似的迭代方法, Object.keys() 如果一个属性不是可枚举的,循环会忽略这个属性 var obj = { key: 'val' }; ...

  5. flutter详解路由栈(二)

    前面,我们已经知道如何简单在路由栈中 push.pop 实例,然而,当遇到一些特殊的情况,这显然不能满足需求.学习 Android 的同学知道 Activity 的各种启动模式可以完成相应需求,Flu ...

  6. 【java基础之异常】死了都要try

    目录 1.异常 1.1 异常概念 1.2 异常体系 1.3 异常分类 1.4 异常的产生过程解析 2. 异常的处理 2.1 抛出异常throw 2.2 Objects非空判断 2.3 声明异常thro ...

  7. 在Opencv中将一幅图像均分成M* N个小图像

    std::vector<std::vector<Mat> > partitionImage(Mat&src,int rows,int cols) 函数中有三个输入参数, ...

  8. AWSome Day简介

    AWSome Day是什么? 它是一场为时一天.结合教育与技术新知的云计算技术免费研讨会.是面向所有开发人员.IT技术人员.或技术/业务领域决策者必备的基础云计算课程.AWS专业级讲师将在现场带领您从 ...

  9. 【HANA系列】SAP HANA SQL/MDX及TCP/IP端口介绍

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL/MDX ...

  10. Linux系统基本操作

      学习目标: 通过本实验掌握Linux的系统安装.磁盘分区.文件管理.IP地址配置.SSH远程管理.WinSCP文件传输.chmod文件权限管理.tar及gzip/bzip2压缩工具的使用,以及关机 ...