1 tcp和udp的区别
- 格式:pdf
- 大小:104.24 KB
- 文档页数:5
tcp协议与 udp协议的区别TCP协议与UDP协议的区别概述:TCP(传输控制协议)和UDP(用户数据报协议)是互联网中最常用的传输层协议。
它们在数据传输的可靠性、连接性、速度和资源消耗等方面有着显著的区别。
本协议旨在详细介绍TCP协议和UDP协议的区别。
一、连接性:1. TCP协议:TCP协议是一种面向连接的协议,通信前需要建立连接,然后才能进行数据传输。
在通信过程中,TCP协议通过三次握手建立连接,并通过四次挥手关闭连接。
TCP协议提供可靠的数据传输,确保数据的完整性和顺序。
2. UDP协议:UDP协议是一种无连接的协议,通信双方不需要建立连接即可直接传输数据。
UDP协议不提供可靠性保证,数据传输过程中可能丢失、重复或乱序。
二、数据传输可靠性:1. TCP协议:TCP协议通过序列号、确认应答、重传机制等手段保证数据传输的可靠性。
如果数据包丢失或损坏,发送方会重新发送数据,直到接收方正确接收。
2. UDP协议:UDP协议不提供数据传输的可靠性保证,数据包的丢失、损坏或乱序在UDP 中是常见的情况。
UDP适用于实时性要求高、对数据传输可靠性要求较低的应用场景,如音频、视频流传输等。
三、数据传输效率:1. TCP协议:TCP协议通过拥塞控制、流量控制等机制保证网络的稳定和公平性,但这也导致了一定的传输延迟。
TCP协议的传输效率相对较低,适用于对实时性要求不高的应用场景。
2. UDP协议:UDP协议没有拥塞控制等机制,传输效率较高。
UDP协议适用于对实时性要求高、对传输延迟要求较低的应用场景,如在线游戏、实时通信等。
四、资源消耗:1. TCP协议:TCP协议需要维护连接状态、序列号等信息,占用较多的内存和计算资源。
同时,TCP协议的拥塞控制机制也会占用一定的带宽。
2. UDP协议:UDP协议不需要维护连接状态等信息,占用的内存和计算资源相对较少。
UDP 协议的资源消耗较低。
五、适用场景:1. TCP协议:TCP协议适用于对数据传输可靠性要求较高的应用场景,如网页浏览、文件传输等。
目前,由于GPRS和CDMA固有的特性,在各个领域中GPRS和CDMA的应用也越来越广泛,但是关于传输中使用TCP/IP协议还是UDP协议,却争论很多。
这里先简单的说一下TCP与UDP的区别:1、基于连接与无连接2、对系统资源的要求(TCP较多,UDP少)3、UDP程序结构较简单4、流模式与数据报模式5、TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证另外结合GPRS网络的情况具体的谈一下他们的区别:1、TCP传输存在一定的延时,大概是1600MS(移动提供),UDP响应速度稍微快一些。
2、TCP包头结构源端口16位目标端口16位序列号32位回应序号32位TCP头长度4位reserved6位控制代码6位窗口大小16位偏移量16位校验和16位选项32位(可选)这样我们得出了TCP包头的最小大小就是20字节.UDP包头结构源端口16位目的端口16位长度16位校验和16位UDP的包小很多.确实如此.因为UDP是非可靠连接.设计初衷就是尽可能快的将数据包发送出去.所以UDP协议显得非常精简.3、GPRS网络端口资源,UDP十分紧缺,变化很快;而TCP采用可靠链路传输,不存在端口变化的问题。
工业场合的应用一般都有以下特点,1、要求实时传输,但也有一些场合是定时传输,总的来说在整个传输过程中要求服务器中心端和GPRS终端设备能相互的、实时的传输数据。
TCP本身就是可靠链路传输,提供一个时时的双向的传输通道,能很好的满足工业现场传输的要求。
但是GPRS网络对TCP链路也存在一个限制:此条链路在长时间(大概20分钟左右,视具体情况而定)没有数据流量,会自动降低此链路的优先级直至强制断开此链路。
所以在实际使用中也会采用心跳包(一般是一个字节的数据)来维持此链路。
UDP由于自身特点,以及GPRS网络UDP端口资源的有限性,在一段时间没有数据流量后,端口容易改变,产生的影响就是从服务器中心端向GPRS终端发送数据,GPRS终端接收不到。
TCP与UDP的区别及其应用TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种互联网传输协议,它们在数据传输过程中有着不同的特点和应用场景。
本文将从协议特点、工作原理、优缺点和应用场景等方面对TCP和UDP进行比较,并探讨它们在实际应用中的差异。
1.协议特点TCP是一种面向连接的、可靠的传输协议,它保证数据的可靠传输和数据的顺序性。
具体来说,TCP通过三次握手建立连接,通过滑动窗口和确认机制来保证数据的可靠传输,通过序号和应答机制来保证数据的顺序性。
因此,TCP适合对数据传输可靠性要求高的应用场景,比如文件传输、网页浏览等。
UDP是一种无连接的、不可靠的传输协议,它不保证数据的可靠传输和数据的顺序性。
具体来说,UDP没有建立连接的过程,也没有确认机制和序号机制,因此对数据传输的可靠性和顺序性没有保证。
UDP适合对实时性要求高的应用场景,比如音视频传输、实时游戏等。
2.工作原理TCP和UDP的工作原理有着明显的区别。
TCP的工作原理如下:1)建立连接:客户端与服务器端通过三次握手建立连接,确定通信双方的初始序号。
2)数据传输:数据传输过程中,TCP采用滑动窗口和确认机制来保证数据的可靠传输,采用序号和应答机制来保证数据的顺序性。
3)断开连接:数据传输完成后,客户端与服务器端通过四次挥手断开连接,释放资源。
UDP的工作原理如下:1)数据传输:客户端通过封装数据包,直接发送给服务器端,不需要建立连接。
2)不可靠性:数据传输过程中,UDP不保证数据的可靠传输和数据的顺序性,也没有确认机制和序号机制。
3)实时性:由于UDP没有建立连接的过程和确认机制,因此传输延迟较小,适合对实时性要求高的应用场景。
3.优缺点TCP和UDP各有其优缺点,根据具体的应用场景选择合适的传输协议。
TCP的优点如下:1)可靠性高:TCP采用滑动窗口和确认机制来保证数据的可靠传输,保证数据不丢失、不重复、按序传输。
TCP和UDP的区别和优缺点1、TCP与UDP区别总结:1、TCP⾯向连接(如打电话要先拨号建⽴连接);UDP是⽆连接的,即发送数据之前不需要建⽴连接2、TCP提供可靠的服务。
也就是说,通过TCP连接传送的数据,⽆差错,不丢失,不重复,且按序到达;UDP尽最⼤努⼒交付,即不保证可靠交付Tcp通过校验和,重传控制,序号标识,滑动窗⼝、确认应答实现可靠传输。
如丢包时的重发控制,还可以对次序乱掉的分包进⾏顺序控制。
3、UDP具有较好的实时性,⼯作效率⽐TCP⾼,适⽤于对⾼速传输和实时性有较⾼的通信或⼴播通信。
4.每⼀条TCP连接只能是点到点的;UDP⽀持⼀对⼀,⼀对多,多对⼀和多对多的交互通信5、TCP对系统资源要求较多,UDP对系统资源要求较少。
2、为什么UDP有时⽐TCP更有优势?UDP以其简单、传输快的优势,在越来越多场景下取代了TCP,如实时游戏。
(1)⽹速的提升给UDP的稳定性提供可靠⽹络保障,丢包率很低,如果使⽤应⽤层重传,能够确保传输的可靠性。
(2)TCP为了实现⽹络通信的可靠性,使⽤了复杂的拥塞控制算法,建⽴了繁琐的握⼿过程,由于TCP内置的系统协议栈中,极难对其进⾏改进。
采⽤TCP,⼀旦发⽣丢包,TCP会将后续的包缓存起来,等前⾯的包重传并接收到后再继续发送,延时会越来越⼤,基于UDP对实时性要求较为严格的情况下,采⽤⾃定义重传机制,能够把丢包产⽣的延迟降到最低,尽量减少⽹络问题对游戏性造成影响。
3、UDP和TCP编程步骤也有些不同,如下:UDP:与之对应的UDP编程步骤要简单许多,分别如下:UDP编程的服务器端⼀般步骤是: 1、创建⼀个socket,⽤函数socket(); 2、设置socket属性,⽤函数setsockopt();* 可选 3、绑定IP地址、端⼝等信息到socket上,⽤函数bind(); 4、循环接收数据,⽤函数recvfrom(); 5、关闭⽹络连接;UDP编程的客户端⼀般步骤是: 1、创建⼀个socket,⽤函数socket(); 2、设置socket属性,⽤函数setsockopt();* 可选 3、绑定IP地址、端⼝等信息到socket上,⽤函数bind();* 可选 4、设置对⽅的IP地址和端⼝等属性; 5、发送数据,⽤函数sendto(); 6、关闭⽹络连接;。
TCP与UDP的区别及其应用TCP(传输控制协议)和UDP(用户数据报协议)是两种不同的传输协议,它们在网络通信中起着非常重要的作用。
虽然它们都是在网络通信中传输数据的协议,但是它们有很大的区别。
在本文中,我将分别介绍TCP和UDP的特点、区别及其在各种应用中的使用。
一、TCP的特点及应用1. TCP的特点TCP是一种面向连接的协议,它在传输数据之前需要先建立连接,然后传输数据,传输结束后再断开连接。
它提供可靠的、按序传输的数据传输服务,能够保证数据的完整性和可靠性。
TCP使用三次握手来建立连接,四次挥手来断开连接,在传输数据时会进行数据校验和确认。
因此,它非常适合对数据传输的要求比较高的应用场景。
2. TCP的应用TCP广泛应用于各种需要可靠传输的应用场景,包括但不限于以下几个方面:(1)网络浏览:当用户访问网页时,浏览器会使用TCP协议与服务器建立连接,传输页面内容。
(2)文件传输:在文件传输过程中,TCP可以保证文件的完整性和可靠性,确保文件在传输过程中不会丢失或损坏。
(3)电子邮件:电子邮件的发送和接收过程中需要使用TCP协议来保证数据传输的可靠性。
(4)远程登录:如Telnet、SSH等远程登录方式都使用TCP协议来传输数据。
(5)数据库访问:数据库访问时需要使用TCP协议来传输数据。
二、UDP的特点及应用1. UDP的特点UDP是一种无连接的协议,它不需要在传输数据之前建立连接,也不保证数据的完整性和可靠性。
UDP是一种简单的数据传输协议,它仅提供数据传输的功能,不对数据传输进行确认和校验。
因此,UDP的传输效率比TCP高,但可靠性较差。
由于UDP不需要建立连接,所以它的开销比较小,适合对实时性要求较高的应用场景。
2. UDP的应用UDP主要用于那些对实时性要求较高的应用场景,包括但不限于以下几个方面:(1)实时视频、音频传输:视频会议、实时语音通话等应用中使用UDP来传输数据,因为在这些应用中,实时性比可靠性更为重要。
TCPUDP有什么区别前⾔计算机分层中的传输层,主要是负责计算机之间的数据传输,TCP 和 UDP 都属于传输层协议。
在实际开发过程中,需要根据实际需求的来选择适当的传输协议。
在这⾥我们简单总结下 TCP、UDP 的特点和区别以及实际开发中如何选择。
TCP 和 UDP 的定义TCP 是⾯向有连接,可靠的流协议。
保证两端通讯主机之间的通信可达,可以处理丢包、乱序等异常,可以有效利⽤带宽、缓解⽹络拥堵。
UDP 是⾯向⽆连接,不可靠的数据报协议。
不会处理丢包、乱序等异常,⼀般交给上层的应⽤层处理。
UDP 的特点及使⽤场景UDP 不提供复杂的控制机制,利⽤ IP 提供⾯向⽆连接的通信服务,随时都可以发送数据,处理简单且⾼效,经常⽤于以下场景:①包总量较⼩的通信(DNS、SNMP)②视频、⾳频等多媒体通信(即时通信)③⼴播通信TCP 的特点及使⽤场景相对于 UDP,TCP 实现了数据传输过程中的各种控制,可以进⾏丢包时的重发控制,还可以对次序乱掉的分包进⾏顺序控制。
在对可靠性要求较⾼的情况下,可以使⽤ TCP,即不考虑 UDP 的时候,都可以选择 TCP。
总结这⾥简单总结下:1.TCP 是⾯向连接的,UDP 是⾯向⽆连接的;故 TCP 需要建⽴连接和断开连接,UDP 不需要。
2.TCP 是流协议,UDP 是数据包协议;故 TCP 数据没有⼤⼩限制,UDP 数据报有⼤⼩限制(UDP 协议本⾝限制、数据链路层的 MTU、缓存区⼤⼩)。
3.TCP 是可靠协议,UDP 是不可靠协议;故 TCP 会处理数据丢包重发以及乱序等情况,UDP 则不会处理。
TCP 为什么要三次握⼿,四次挥⼿?前⾔TCP 属于传输层协议,是⾯向有连接,可靠的流协议。
⾯对有连接这个特性,TCP 就有建⽴连接和断开连接的过程。
我们分别了解建⽴连接和断开连接的流程以及当中的⼀些疑问。
TCP 建⽴连接和断开连接流程⾸先我们来看下这张经典的流程图:握⼿过程可以简化为下⾯的四次交互:1.Client 端⾸先发送⼀个 SYN 包,告诉 Server 端我的初始序列号是 X;Client 端进⼊了 SYN-SENT(同步已发送状态)状态。
tcp协议与udp协议的区别协议名称:TCP协议与UDP协议的区别一、引言TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是网络通信中常用的两种传输协议。
本协议旨在详细描述TCP协议和UDP协议之间的区别,包括其工作原理、特点、适用场景等方面的内容。
二、TCP协议的特点1. 可靠性:TCP协议提供可靠的数据传输,通过数据包的确认、重传机制和流量控制来确保数据的完整性和正确性。
2. 面向连接:TCP协议在通信前需要建立连接,通过三次握手来建立可靠的通信信道。
3. 有序性:TCP协议保证数据包按照发送的顺序进行传输,接收端会对乱序的数据包进行排序,保证数据的有序性。
4. 慢启动:TCP协议采用慢启动算法来控制数据的发送速率,以避免网络拥塞。
三、UDP协议的特点1. 无连接:UDP协议不需要建立连接,数据包的发送和接收是相互独立的,适用于实时性要求较高的应用场景。
2. 不可靠性:UDP协议不提供数据包的确认和重传机制,数据包的可靠性无法得到保证,但能够提供较高的传输效率。
3. 无序性:UDP协议不保证数据包按照发送的顺序进行传输,接收端会按照接收顺序进行处理。
4. 支持一对一、一对多、多对一和多对多的通信模式。
四、适用场景的区别1. TCP协议适用于对数据可靠性要求较高的场景,如文件传输、电子邮件等。
2. UDP协议适用于对实时性要求较高的场景,如音视频传输、在线游戏等。
五、性能比较1. 传输效率:UDP协议由于不需要建立连接和提供可靠性传输,传输效率较高;而TCP协议由于提供可靠性传输,传输效率相对较低。
2. 带宽占用:TCP协议的带宽占用较大,由于需要进行数据包的确认和重传,会占用较多的网络资源;而UDP协议的带宽占用较小。
3. 丢包率:UDP协议由于不提供数据包的确认和重传机制,丢包率相对较高;而TCP协议通过确认和重传机制,丢包率较低。
TCP与UDP的区别及其应用TCP(Transmission Control Protocol)与UDP(User Datagram Protocol)是两种常见的网络传输协议,它们在网络通信中起着非常重要的作用。
虽然它们都是用来传输数据的协议,但是它们有着不同的特性和适用场景。
1. TCP的特点及应用TCP是一种面向连接的协议,它通过三次握手建立连接,然后在数据传输过程中保证数据的可靠性和有序性。
TCP协议的特点包括以下几点:1)可靠性:TCP通过确认机制和重传机制来保证数据的可靠传输。
当发送方发送数据后,接收方会对数据进行确认,如果发送方未收到确认信息,就会重传数据。
通过这种方式,TCP可以保证数据的可靠性。
2)有序性:TCP保证数据的有序传输,即发送的数据包在接收端按照发送的顺序进行重组。
3)流量控制:TCP利用滑动窗口机制来进行流量控制,当接收方无法处理发送方的数据时,可以通过发送窗口大小来告知发送方暂停发送。
4)拥塞控制:TCP通过拥塞窗口动态调整的方式来进行拥塞控制,以避免网络拥塞。
5)面向字节流:TCP是面向字节流的协议,它将数据流看作一个字节序列进行传输。
由于TCP具有以上特点,它适用于对数据可靠性和有序性要求较高的场景。
例如,网页浏览、电子邮件传输、文件传输等应用都是基于TCP协议进行数据传输的。
2. UDP的特点及应用UDP是一种无连接的协议,它并不会像TCP那样进行连接的建立和断开,而是直接将数据包发送出去。
UDP协议的特点包括以下几点:1)无连接:UDP是一种无连接的协议,它不需要进行连接的建立和断开,因此传输时延较小。
2)简单性:UDP相对于TCP来说更加简单,数据包的头部信息较少,传输效率高。
3)不可靠性:UDP不保证数据的可靠性,数据包的丢失和重组都可能发生。
4)面向报文:UDP是面向报文的协议,它将数据看作一个个的报文进行传输。
由于UDP具有以上特点,它适用于一些对实时性要求较高的应用场景,例如音视频传输、在线游戏等。
TCP和UDP区别TCP(Transmission Control Protocol,传输控制协议)TCP协议是⼀种可靠的、⼀对⼀的、⾯向有连接的通信协议,TCP主要通过下列⼏种⽅式保证数据传输的可靠性:(1)在使⽤TCP协议进⾏数据传输时,往往需要客户端和服务端先建⽴⼀个“通道“、且这个通道只能够被客户端和服务端使⽤,所以TCP 传输协议只能⾯向⼀对⼀的连接。
(2)为了保证数据传输的准确⽆误,TCP传输协议将⽤于传输的数据包分为若⼲个部分(每个部分的⼤⼩根据当时的⽹络情况⽽定),然后在它们的⾸部添加⼀个检验字节。
当数据的⼀个部分被接收完毕之后,服务端会对这⼀部分的完整性和准确性进⾏校验,校验之后如果数据的完整度和准确度都为100%,在服务端会要求客户端开始数据下⼀个部分的传输,如果数据的完整性和准确性与原来不相符,那么服务端会要求客户端再次传输这个部分。
客户端与服务端在使⽤TCP传输协议时要先建⽴⼀个“通道”,在传输完毕之后⼜要关闭这“通道”,前者可以被形象地成为“三次握⼿”,⽽后者则可以被称为“四次挥⼿”。
通道的建⽴——三次握⼿:(1)在建⽴通道时,客户端⾸先要向服务端发送⼀个SYN同步信号。
(2)服务端在接收到这个信号之后会向客户端发出SYN同步信号和ACK确认信号。
(3)当服务端的ACK和SYN到达客户端后,客户端与服务端之间的这个“通道”就会被建⽴起来。
通道的关闭——四次挥⼿:(1)在数据传输完毕之后,客户端会向服务端发出⼀个FIN终⽌信号。
(2)服务端在收到这个信号之后会向客户端发出⼀个ACK确认信号。
(3)如果服务端此后也没有数据发给客户端时服务端会向客户端发送⼀个FIN终⽌信号。
(4)客户端在收到这个信号之后会回复⼀个确认信号,在服务端接收到这个信号之后,服务端与客户端的通道也就关闭了。
TCP协议能为应⽤程序提供可靠的通信连接,使⼀台计算机发出的字节流⽆差错地发往⽹络上的其他计算机,对可靠性要求⾼的数据通信系统往往使⽤TCP协议传输数据。
1:tcp和udp的区别 TCP:是⾯面向连接的流传输控制协议,具有⾼高可靠性,确保传输数据的正确性,有验证重发机制,因此不不会出现丢失或乱序。
UDP:是⽆无连接的数据报服务,不不对数据报进⾏行行检查与修改,⽆无须等待对⽅方的应答,会出现分组丢失、重复、乱序,但具有较好的实时性,UDP段结构⽐比TCP 的段结构简单,因此⽹网络开销也⼩小。
2、如何尽量量处理理TIMEWAIT过多sysctl改两个内核参数就⾏行行了了,如下: net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1 简单来说,就是打开系统的TIMEWAIT重⽤用和快速回收,⾄至于怎么重⽤用和快速回收,这个问题我没有深究,实际场景中这么做确实有效果。
⽤用netstat或者ss观察就能得出结论。
还有些朋友同时也会打开syncookies这个功能,如下: net.ipv4.tcp_syncookies = 1 打开这个syncookies的⽬目的实际上是:“在服务器器资源(并⾮非单指端⼝口资源,拒绝服务有很多种资源不不⾜足的情况)不不⾜足的情况下,尽量量不不要拒绝TCP的syn(连接)请求,尽量量把syn请求缓存起来,留留着过会⼉儿有能⼒力力的时候处理理这些TCP的连接请求”。
如果并发量量真的⾮非常⾮非常⾼高,打开这个其实⽤用处不不⼤大。
2:流量量控制和拥塞控制拥塞控制⽹网络拥塞现象是指到达通信⼦子⽹网中某⼀一部分的分组数量量过多,使得该部分⽹网络来不不及处理理,以致引起这部分乃⾄至整个⽹网络性能下降的现象,严重时甚⾄至会导致⽹网络通信业务陷⼊入停顿,即出现死锁现象。
拥塞控制是处理理⽹网络拥塞现象的⼀一种机制。
流量量控制数据的传送与接收过程当中很可能出现收⽅方来不不及接收的情况,这时就需要对发⽅方进⾏行行控制,以免数据丢失。
3:多线程如何同步 windows线程同步有四种⽅方式:临界区、内核对象、互斥量量、信号量量。
Linux 线程同步有最常⽤用的是:互斥锁、条件变量量和信号量量。
4:进程间通讯的⽅方式有哪些,各有什什么优缺点进程间通信 5:tcp连接建⽴立的时候3次握⼿手,断开连接的4次握⼿手的具体过程建⽴立连接采⽤用的3次握⼿手协议,具体是指:第⼀一次握⼿手是客户端connect连接到server,server accept client的请求之后,向client 端发送⼀一个消息,相当于说我都准备好了了,你连接上我了了,这是第⼆二次握⼿手,第3次握⼿手就是client向server发送的,就是对第⼆二次握⼿手消息的确认。
之后client 和server就开始通讯了了。
断开连接的4次握⼿手,具体如下:断开连接的⼀一端发送close请求是第⼀一次握⼿手,另外⼀一端接收到断开连接的请求之后需要对close进⾏行行确认,发送⼀一个消息,这是第⼆二次握⼿手,发送了了确认消息之后还要向对端发送close消息,要关闭对对端的连接,这是第3次握⼿手,⽽而在最初发送断开连接的⼀一端接收到消息之后,进⼊入到⼀一个很重要的状态time_wait状态,这个状态也是⾯面试官经常问道的问题,最后⼀一次握⼿手是最初发送断开连接的⼀一端接收到消息之后。
对消息的确认。
6:epoll与select的区别 select在⼀一个进程中打开的最⼤大fd 是有限制的,由FD_SETSIZE设置,默认值是2048。
不不过 epoll则没有这个限制,它所⽀支持的fd上限是最⼤大可以打开⽂文件的数⽬目,这个数字⼀一般远⼤大于2048,⼀一般来说内存越⼤大,fd上限越⼤大,1G内存都能达到⼤大约10w左右。
select的轮询机制是系统会去查找每个fd是否数据已准备好,当fd很多的时候,效率当然就直线下降了了,epoll采⽤用基于事件的通知⽅方式,⼀一旦某个fd数据就绪时,内核会采⽤用类似callback的回调机制,迅速激活这个⽂文件描述符,⽽而不不需要不不断的去轮询查找就绪的描述符,这就是epoll⾼高效最本质的原因。
⽆无论是select还是epoll都需要内核把FD消息通知给⽤用户空间,如何避免不不必要的内存拷⻉贝就很重要,在这点上,epoll是通过内核于⽤用户空间mmap同⼀一块内存实现的,⽽而select则做了了不不必要的拷⻉贝 7:epoll中et和lt的区别与实现原理理LT:⽔水平触发,效率会低于ET触发,尤其在⼤大并发,⼤大流量量的情况下。
但是LT 对代码编写要求⽐比较低,不不容易易出现问题。
LT模式服务编写上的表现是:只要有数据没有被获取,内核就不不断通知你,因此不不⽤用担⼼心事件丢失的情况。
ET:边缘触发,效率⾮非常⾼高,在并发,⼤大流量量的情况下,会⽐比LT少很多epoll的系统调⽤用,因此效率⾼高。
但是对编程要求⾼高,需要细致的处理理每个请求,否则容易易发⽣生丢失事件的情况。
8. 5xx(服务器器错误) 500 (服务器器内部错误)服务器器遇到错误,⽆无法完成请求。
502 (错误⽹网关)服务器器作为⽹网关或代理理,从上游服务器器收到⽆无效响应。
4xx(请求错误) 404 (未找到)服务器器找不不到请求的⽹网⻚页 3xx (重定向)302 (临时移动)服务器器⽬目前从不不同位置的⽹网⻚页响应请求,但请求者应继续使⽤用原有位置来进⾏行行以后的请求。
TCP UDP TCP与UDP基本区别 1.基于连接与⽆无连接 2.TCP要求系统资源较多,UDP较少; 3.UDP程序结构较简单 4.流模式(TCP)与数据报模式(UDP); 5.TCP 保证数据正确性,UDP可能丢包 6.TCP保证数据顺序,UDP不不保证 UDP应⽤用场景: 1.⾯面向数据报⽅方式 2.⽹网络数据⼤大多为短消息 3.拥有⼤大量量Client 4.对数据安全性⽆无特殊要求 5.⽹网络负担⾮非常重,但对响应速度要求⾼高具体编程时的区别 1.socket()的参数不不同 2.UDP Server不不需要调⽤用listen和accept 3.UDP收发数据⽤用sendto/recvfrom函数 4.TCP:地址信息在connect/accept时确定 5.UDP:在sendto/recvfrom函数中每次均需指定地址信息 6.UDP:shutdown函数⽆无效编程区别通常我们在说到⽹网络编程时默认是指TCP编程,即⽤用前⾯面提到的socket函数创建⼀一个socket⽤用于TCP通讯,函数参数我们通常填为SOCK_STREAM。
即socket(PF_INET, SOCK_STREAM, 0),这表示建⽴立⼀一个socket⽤用于流式⽹网络通讯。
SOCK_STREAM这种的特点是⾯面向连接的,即每次收发数据之前必须通过connect建⽴立连接,也是双向的,即任何⼀一⽅方都可以收发数据,协议本身提供了了⼀一些保障机制保证它是可靠的、有序的,即每个包按照发送的顺序到达接收⽅方。
⽽而SOCK_DGRAM这种是User Datagram Protocol协议的⽹网络通讯,它是⽆无连接的,不不可靠的,因为通讯双⽅方发送数据后不不知道对⽅方是否已经收到数据,是否正常收到数据。
任何⼀一⽅方建⽴立⼀一个socket以后就可以⽤用sendto发送数据,也可以⽤用recvfrom接收数据。
根本不不关⼼心对⽅方是否存在,是否发送了了数据。
它的特点是通讯速度⽐比较快。
⼤大家都知道TCP是要经过三次握⼿手的,⽽而UDP没有。
基于上述不不同,UDP和TCP编程步骤也有些不不同,如下: TCP: TCP编程的服务器器端⼀一般步骤是: 1、创建⼀一个socket,⽤用函数socket(); 2、设置socket属性,⽤用函数setsockopt(); * 可选 3、绑定IP地址、端⼝口等信息到socket上,⽤用函数bind(); 4、开启监听,⽤用函数listen(); 5、接收客户端上来的连接,⽤用函数accept(); 6、收发数据,⽤用函数send()和recv(),或者read()和write(); 7、关闭⽹网络连接; 8、关闭监听;TCP编程的客户端⼀一般步骤是: 1、创建⼀一个socket,⽤用函数socket();2、设置socket属性,⽤用函数setsockopt();可选3、绑定IP地址、端⼝口等信息到socket上,⽤用函数bind();可选4、设置要连接的对⽅方的IP地址和端⼝口等属性;5、连接服务器器,⽤用函数connect();6、收发数据,⽤用函数send()和recv(),或者read()和write();7、关闭⽹网络连接;UDP: 与之对应的UDP编程步骤要简单许多,分别如下: UDP编程的服务器器端⼀一般步骤是: 1、创建⼀一个socket,⽤用函数socket(); 2、设置socket属性,⽤用函数setsockopt();可选 3、绑定IP地址、端⼝口等信息到socket上,⽤用函数bind(); 4、循环接收数据,⽤用函数recvfrom(); 5、关闭⽹网络连接;UDP编程的客户端⼀一般步骤是: 1、创建⼀一个socket,⽤用函数socket();2、设置socket属性,⽤用函数setsockopt();可选3、绑定IP地址、端⼝口等信息到socket上,⽤用函数bind();可选4、设置对⽅方的IP地址和端⼝口等属性;5、发送数据,⽤用函数sendto();6、关闭⽹网络连接;TCP和UDP是OSI模型中的运输层中的协议。
TCP提供可靠的通信传输,⽽而UDP 则常被⽤用于让⼴广播和细节控制交给应⽤用的通信传输。
UDP补充: UDP不不提供复杂的控制机制,利利⽤用IP提供⾯面向⽆无连接的通信服务。
并且它是将应⽤用程序发来的数据在收到的那⼀一刻,⽴立刻按照原样发送到⽹网络上的⼀一种机制。
即使是出现⽹网络拥堵的情况下,UDP也⽆无法进⾏行行流量量控制等避免⽹网络拥塞的⾏行行为。
此外,传输途中如果出现了了丢包,UDO也不不负责重发。
甚⾄至当出现包的到达顺序乱掉时也没有纠正的功能。
如果需要这些细节控制,那么不不得不不交给由采⽤用UDO的应⽤用程序去处理理。
换句句话说,UDP将部分控制转移到应⽤用程序去处理理,⾃自⼰己却只提供作为传输层协议的最基本功能。
UDP有点类似于⽤用户说什什么听什什么的机制,但是需要⽤用户充分考虑好上层协议类型并制作相应的应⽤用程序。
TCP补充: TCP充分实现了了数据传输时各种控制功能,可以进⾏行行丢包的重发控制,还可以对次序乱掉的分包进⾏行行顺序控制。
⽽而这些在UDP中都没有。
此外,TCP作为⼀一种⾯面向有连接的协议,只有在确认通信对端存在时才会发送数据,从⽽而可以控制通信流量量的浪费。