TCP 和 UDP

TCP/IP五层网络结构模型

  • 物理层:物理层建立在物理通信介质的基础上,作为系统和通信介质的接口,用来实现数据链路实体间透明的比特 (bit) 流传输。只有该层为真实物理通信,其它各层为虚拟通信

  • 数据链路层:在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。数据的单位称为帧(frame)

  • 网络层:选择合适的路由,使数据分组(packet)可以交付到目的主机

  • 传输层:负责主机中进程间的通信

  • 应用层:直接为用户的应用程序提供服务

UDP详解

以下内容来自wiki - 最英俊的百科全书

用户数据报协议(英语:User Datagram Protocol,缩写为UDP),又称使用者资料包协定,是一个简单的面向数据报的传输层协议,正式规范为RFC 768。
在TCP/IP模型中,UDP为网络层以上和应用层以下提供了一个简单的接口。UDP只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。UDP在IP数据报的头部仅仅加入了复用和数据校验(字段)。

UDP的优点

  • 无需建立连接(减少延迟)
  • 实现简单:无需维护连接状态
  • 头部开销小(最小值为8byte)
  • 没有拥塞控制:应用可以更好的控制发送时间和发送速率

UDP头部:


UDP的头部是由源端口号、目标端口号、包长和校验4个部分组成,其中两个是可选的。各16bit的来源端口和目的端口用来标记发送和接受的应用进程。因为UDP不需要应答,所以来源端口是可选的,如果来源端口不用,那么置为零。在目的端口后面是长度固定的以字节为单位的长度域,用来指定UDP数据报包括数据部分的长度,长度最小值为8byte。首部剩下地16bit是用来对首部和数据部分一起做校验和(Checksum)的,checksum主要是用来检测UDP段在传输中是否发生了错误。还有就是,校验和计算中也需要计算UDP伪头部,伪头部包含IP头部的一些字段。我们刚才介绍了识别一个通信需要5项信息,而UDP头部只有端口号,余下的三项在IP头部,所以引入了伪头部的概念。(IPv6的IP头部没有校验和字段)

基于UDP协议的有:

  • 域名系统(DNS)
  • 简单网络管理协议(SNMP)
  • 动态主机配置协议(DHCP)
  • 路由信息协议(RIP)
  • 自举协议(BOOTP)
  • 简单文件传输协议(TFTP)

TCP详解

以下内容来自wiki - 最英俊的百科全书
传输控制协议(英语:Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和

三次握手

TCP用三路握手(three-way handshake)过程创建一个连接。在连接创建过程中,很多参数要被初始化,例如序号被初始化以保证按序传输和连接的强壮性。

  • 客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三路握手的一部分。客户端把这段连接的序号设定为随机数A。
  • 服务器端应当为一个合法的SYN回送一个SYN/ACK。ACK的确认码应为A+1,SYN/ACK包本身又有一个随机序号B。
  • 最后,客户端再发送一个ACK。当服务端受到这个ACK的时候,就完成了三路握手,并进入了连接创建状态。此时包序号被设定为收到的确认号A+1,而响应则为B+1。

TCP状态编码

下表为TCP状态码列表,以S指代服务器,C指代客户端,S&C表示两者,S/C表示两者之一:[1]

  • LISTEN S
    等待从任意远程TCP端口的连接请求。侦听状态。
  • SYN-SENT C
    在发送连接请求后等待匹配的连接请求。通过connect()函数向服务器发出一个同步(SYNC)信号后进入此状态。
  • SYN-RECEIVED S
    已经收到并发送同步(SYNC)信号之后等待确认(ACK)请求。
  • ESTABLISHED S&C
    连接已经打开,收到的数据可以发送给用户。数据传输步骤的正常情况。此时连接两端是平等的。
  • FIN-WAIT-1 S&C
    主动关闭端调用close()函数发出FIN请求包,表示本方的数据发送全部结束,等待TCP连接另一端的确认包或FIN请求包。
  • FIN-WAIT-2 S&C
    主动关闭端在FIN-WAIT-1状态下收到确认包,进入等待远程TCP的连接终止请求的半关闭状态。这时可以接收数据,但不再发送数据。
  • CLOSE-WAIT S&C
    被动关闭端接到FIN后,就发出ACK以回应FIN请求,并进入等待本地用户的连接终止请求的半关闭状态。这时可以发送数据,但不再接收数据。
  • CLOSING S&C
    在发出FIN后,又收到对方发来的FIN后,进入等待对方对连接终止(FIN)的确认(ACK)的状态。少见。
  • LAST-ACK S&C
    被动关闭端全部数据发送完成之后,向主动关闭端发送FIN,进入等待确认包的状态。
  • TIME-WAIT S/C
    主动关闭端接收到FIN后,就发送ACK包,等待足够时间以确保被动关闭端收到了终止请求的确认包。【按照RFC 793,一个连接可以在TIME-WAIT保证最大四分钟,即最大分段寿命(maximum segment lifetime)的2倍】
  • CLOSED S&C
    完全没有连接。

基于TCP实现的协议有

  • HTTP/HTTPS,
  • Telnet
  • FTP
  • SMTP

TCP(Transmission Control Protocol)和UDP(User DataGram Protocol)的区别

下面我们主要从连接性(Connectivity)、可靠性(Reliability)、有序性(Ordering)、有界性(Boundary)、拥塞控制(Congestion or Flow control)、传输速度(Speed)、量级(Heavy/Light weight)、头部大小(Header size)等8个方面来对比它们:

  1. TCP是面向连接(Connection oriented)的协议,UDP是无连接(Connection less)协议;
    TCP用三次握手建立连接:1) Client向server发送SYN;2) Server接收到SYN,回复Client一个SYN-ACK;3) Client接收到SYN_ACK,回复Server一个ACK。到此,连接建成。UDP发送数据前不需要建立连接。
  2. TCP可靠,UDP不可靠;TCP丢包会自动重传,UDP不会。
  3. TCP有序,UDP无序;消息在传输过程中可能会乱序,后发送的消息可能会先到达,TCP会对其进行重排序,UDP不会。
  4. TCP无界,UDP有界;TCP通过字节流传输,UDP中每一个包都是单独的。
  5. TCP有流量控制(拥塞控制),UDP没有;主要靠三次握手实现。
  6. TCP传输慢,UDP传输快;因为TCP需要建立连接、保证可靠性和有序性,所以比较耗时。这就是为什么视频流、广播电视、在线多媒体游戏等选择使用UDP。
  7. TCP是重量级的,UDP是轻量级的;TCP要建立连接、保证可靠性和有序性,就会传输更多的信息,如TCP的包头比较大。
  8. TCP的头部比UDP大;TCP头部需要20字节,UDP头部只要8个字节

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397291.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sapmto生产模式配置及操作详解_硬岩制砂线怎么设计?300t/h的生产流程与设备配置详解...

点击上方“蓝字”关注我们说到硬岩,花岗岩、辉绿岩都不陌生,关于花岗岩的生产线配置小编曾介绍过,感兴趣的可直接点阅:《硬质岩破碎很发愁?从原料到成品,看花岗岩的破碎制砂生产线配置》《年产300万t花岗岩…

公交卡软件测试思路,中国移动NFC专用SIM卡测试过程介绍

近期,通讯运营商在NFC的应用领域迈出了一大步,消费者在北京乘坐地铁、公交以及其他支持市政一卡通消费的场所均可进行手机支付。接下来就从办卡开始,为大家详细介绍一下中国移动NFC手机钱包的实测过程。办理手机NFC支付业务想要刷手机消费除了…

Java 集合系列目录(Category)

Java 集合系列目录(Category) 转自:Java 集合系列目录(Category) 01. Java 集合系列01之 总体框架 02. Java 集合系列02之 Collection架构 03. Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 04. Java 集合系列04之 fail-fast总结(通过ArrayList来说明f…

spring的applicationContext.xml如何自动加载

一个web工程自动加载的配置文件只有web.xml&#xff0c;想要加载其他.xml必须在web.xml里面进行配置。 用spring的时候需要一个bean容器来管理所有的bean&#xff0c;所有bean默认是写在applicationContext.xml里的&#xff0c;在web.xml里面是这么设置的&#xff0c; 1 <co…

青年教师大讲堂 计算机,浙海大青年教师大讲堂之船机学院“知识改变命运”...

原标题&#xff1a;浙海大青年教师大讲堂之船机学院“知识改变命运”10月28日上午&#xff0c;由校团委主办&#xff0c;船舶与机电工程学院团委承办的青年博士教师大讲堂系列活动之“知识改变命运”在长峙校区杨存国一号报告厅举行。本次讲座由船舶与机电工程学院青年博士石学…

ndwi是什么意思_NDWI是什么意思

1. Thus, this indicates that NDWI is a useful vegetation index for estimating forest fire potential in the Atlantic region.因此&#xff0c;这表明NDWI是在大西洋地区的潜在有用的森林火灾指数。2. NDWI的翻译2. Therefore, the NDWI is not suitable for enhancing a…

深入浅出分布式文件系统MogileFS集群

一&#xff0c;简介 MogileFS是一款开源的分布式文件存储系统&#xff0c;由LiveJournal旗下的Danga Interactive公司开发。Danga团队开发了包括 Memcached、MogileFS、Perlbal 等多个知名的开源项目。目前MogileFS的日益成熟使用此解决方法的公司越来越多&#xff0c;例如日…

python并行计算numpy_【Nature文章摘录】NumPy: 从单机到分布式并行计算

原标题&#xff1a;【Nature文章摘录】NumPy: 从单机到分布式并行计算点击上图&#xff0c;查看详情本公众号的推送以互联网大数据技术为主&#xff0c;是《互联网大数据处理技术与应用》《Python爬虫大数据采集与挖掘》等课程的配套号。内容涉及 大数据采集、存储、分析挖掘的…

Aho-Corasick automaton 模板

typedef struct Node* node;const int MAXNs ;//模式串最大長度 const int MAXNS ;//文章&#xff08;待匹配串&#xff09;最大長度 struct Node{node next[26];node fail;//失配指针int sum;Node(){sum 0;fail NULL;memset(next,NULL,sizeof next);} };char s[MAXNs];//…

Ubuntu Server 14.04 下root无法ssh登陆

今天安装了Ubuntu Server 14.04 在终端配置了root密码后&#xff0c;使用SecureCRT和putty竟然不能ssh登陆&#xff0c;SecureCRT一直提示密码不对&#xff0c;但是可以肯定输入的密码100%正确&#xff0c;用putty则一直报Access Denied&#xff0c;所以可以肯定系统限制了ro…

计算机的控制面板打不开,控制面板打不开,教您控制面板打不开怎么办

最近有些不少的小伙伴向小编反映说&#xff0c;控制面板突然出现了打不开的情况&#xff0c;那么遇到这种情况该怎么办呢&#xff1f;其实控制面板打不开很有可能是因为系统文件损坏造成的。今天&#xff0c;小编就来把打不开控制面板的解决方法分享给你们。其实控制面板是我们…

【算法题】Multiples of 3 and 5

Multiples of 3 and 5 原题 题意如下&#xff1a; 找出N以内的3和5的倍数的和。 思路 1、刚看到觉得好弱智&#xff0c;直接遍历一遍不就OK了吗&#xff1f;但是第2和第3个测试用例报了TLE&#xff0c;超时。 2、然后想不出来了&#xff0c;搜了一下&#xff0c;发现有一个类似…

PIL简单图片处理(上)

自己看了下python&#xff0c;本来想照教程上一点一点学的&#xff0c;学了一会发现好没劲&#xff08;教程本身质量很好&#xff09;&#xff0c;学python就是为了好玩&#xff0c;为什么还这么按部就班勒&#xff1f;果断google下python的爬虫&#xff08;开始目的是这个&…

方舟服务器制作修改,ARK方舟:生存进化服务器禁止物品制造的修改方法

ARK方舟:生存进化服务器禁止物品制造的修改方法代码对应的文件目录:文件:Game.ini框架:[/script/shootergame.shootergamemode]例如禁用C4遥控器代码为:ConfigOverrideItemCraftingCosts(ItemClassString"PrimalItem_WeaponC4_C",BaseCraftingResourceRequirements((…

Java中ArrayList的使用

ArrayList类是一个特殊的数组--动态数组。来自于System.Collections命名空间&#xff1b;通过添加和删除元素&#xff0c;就可以动态改变数组的长度。 优点&#xff1a; 1、支持自动改变大小 2、可以灵活的插入元素 3、可以灵活的删除元素 局限&#xff1a; 比一般的数组的速度…

mallco动态分配_malloc动态分配的内存的生存周期是多少?

曾经有一个朋友提过这样一个问题&#xff0c;malloc动态分配的内存的生存周期是多少当时直接回答&#xff0c;当然是在调用free进行释放之前阿!!但回头我仔细想过这个问题&#xff0c;在free调用之前那段范围内&#xff0c;但free只有一个指针参数&#xff0c;它是如何知道要释…

中兴中心管理服务器fxh3120,中兴多媒体业务中心ZXMS80

运营支撑层&#xff1a; 提供面向视讯用户的客服中心和面向管理员的业务中心、网管中心。客服中心提供会议预约、会议控制、帐单查询、意见反馈等功能。业务中心分为业务受理中心、业务管理中心、认证计费中心。其中业务受理中心实现开户、放号及收费等功能&#xff1b;业务管理…

随机森林经典文

原文链接 转载于:https://www.cnblogs.com/luoganttcc/p/10525324.html

python namespace unique_Python使用uuid库生成唯一标识ID

uuid是128位的全局唯一标识符(univeral unique identifier)&#xff0c;通常用32位的一个字符串的形式来表现。有时也称guid(globalunique identifier)。python中自带了uuid模块来进行uuid的生成和管理工作。python中的uuid模块基于信息如MAC地址、时间戳、命名空间、随机数、伪…

SQL Server 2008空间数据应用系列四:基础空间对象与函数应用

SQL Server 2008空间数据应用系列四&#xff1a;基础空间对象与函数应用 原文:SQL Server 2008空间数据应用系列四&#xff1a;基础空间对象与函数应用友情提示&#xff0c;您阅读本篇博文的先决条件如下&#xff1a; 1、本文示例基于Microsoft SQL Server 2008 R2调测。 2、具…