TCP和UDP的区别

原文:https://blog.csdn.net/li_ning_/article/details/52117463

1、TCP与UDP基本区别

  1. 基于连接与无连接
  2. TCP要求系统资源较多,UDP较少;
  3. UDP程序结构较简单
  4. 流模式(TCP)与数据报模式(UDP);
  5. TCP保证数据正确性,UDP可能丢包
  6. TCP保证数据顺序,UDP不保证

  
2、UDP应用场景

  1. 面向数据报方式
  2. 网络数据大多为短消息
  3. 拥有大量Client
  4. 对数据安全性无特殊要求
  5. 网络负担非常重,但对响应速度要求高

3、具体编程时的区别

  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编程的服务器端一般步骤是: 

  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属性,用函数setsocket();* 可选
  3. 绑定IP地址、端口等信息到socket上,用函数bind();* 可选
  4. 设置要连接的对方的IP地址和端口等属性;
  5. 连接服务器,用函数connect();
  6. 收发数据,用函数send()和recv(),或者read()和write();
  7. 关闭网络连接;

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也无法进行流量控制等避免网络拥塞的行为。此外,传输途中如果出现了丢包,UDP也不负责重发。甚至当出现包的到达顺序乱掉时也没有纠正的功能。如果需要这些细节控制,那么不得不交给由采用UDP的应用程序去处理。换句话说,UDP将部分控制转移到应用程序去处理,自己却只提供作为传输层协议的最基本功能。UDP有点类似于用户说什么听什么的机制,但是需要用户充分考虑好上层协议类型并制作相应的应用程序。

TCP补充:

TCP充分实现了数据传输时各种控制功能,可以进行丢包的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在UDP中都没有。此外,TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。

TCP与UDP区别总结:

  • TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接。
  • TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保   证可靠交付。
  • TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的。
  • UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
  • TCP首部开销20字节;UDP的首部开销小,只有8个字节。
  • TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。

常见的网络协议

原文:https://www.cnblogs.com/wuyuan2011woaini/p/5778601.html

在网络的各层中存在着许多协议,

它是定义通过网络进行通信的规则,

接收方的发送方同层的协议必须一致,否则一方将无法识别另一方发出的信息,

以这种规则规定双方完成信息在计算机之间的传送过程。

下面就对网络协议规范作个概述:

ARP(Address Resolution Protocol)地址解析协议 

它是用于映射计算机的物理地址和临时指定的网络地址。启动时它选择一个协议(网络层)地址,并检查这个地址是否已经有别的计算机使用,如果没有被使用,此结点被使用这个地址,如果此地址已经被别的计算机使用,正在使用此地址的计算机会通告这一信息,只有再选另一个地址了。

SNMP(Simple Network Management Protocol)网络管理协议 

它是TCP/IP协议中的一部份,它为本地和远端的网络设备管理提供了一个标准化途径,是分布式环境中的集中化管理的重要组成部份。

AppleShare protocol(AppleShare协议) 

它是Apple机上的通信协议,它允许计算机从服务器上请求服务或者和服务器交换文件。AppleShare可以在TCP/IP协议或其它网络协议如IPX、AppleTalk上进行工作。使用它时,用户可以访问文件,应用程序,打印机和其它远程服务器上的资源。它可以和配置了AppleShare协议的任何服务器进行通信,Macintosh、Mac OS、Windows NT和Novell Netware都支持AppleShare协议。

AppleTalk协议 

它是Macintosh计算机使用的主要网络协议。Windows NT服务器有专门为Macintosh服务,也能支持该协议。其允许Macintosh的用户共享存储在 Windows NT文件夹的Mac-格式的文件,也可以使用和Windows NT连接的打印机。Windows NT共享文件夹以传统的Mac文件夹形式出现在Mac用户面前。Mac文件名按需要被转换为FAT(8.3)格式和NTFS文件标准。支持MAc 文件格式的DOS和Windows客户端能与Mac用户共享这些文件。

BGP4(Border Gateway Protocol Vertion 4)边界网关协议-版本4 

它是用于在自治网络中网关主机(每个主机有自己的路由)之间交换路由信息的协议,它使管理员能够在已知的路由策略上配置路由加权,可以更方便地使用无级内部域名路由(CIDR),它是一种在网络中可以容纳更多地址的机制,它比外部网关协议(EGP)更新。BGP4经常用于网关主机之间,主机中的路由表包括了已知路由的列表,可达的地址和路由加权,这样就可以在路由中选择最好的通路了。BGP在局域网中通信时使用内部BGP(IBGP),因为IBGP不能很好工作。

BOOTP协议 

它是一个基于TCP/IP协议的协议,它可以让无盘站从一个中心服务器上获得IP地址,现在我们通常使用DHCP协议进行这一工作。

CMIP(Common Management Information Protocol)通用管理信息协议

它是建立在开放系统互连通信模式上的网络管理协议。相关的通用管理信息服务(CMIS)定义了访问和控制网络对象,设备和从对象设备接收状态信息的方法。

Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议 

在广域网中,两台计算机建立物理连接过程所使用的协议,这种物理连接要持续到成功地交换完数据为止。在nternet中,TCP(传输控制协议)即这一类型的协议,它为两台连接在网络上的计算机提供了可相互通信且确保数据成功传输的一种手段。面向连接的协议一定要保证数据传送到对方。在广域网中,对接收方的计算机不做在线状态,或接收能力的测试,都能使数据由一台计算机传输到另外一台计算机上的协议。这是包交换网络中的主要协议,在Internet中的IP协议即无连接协议,IP只关注将数据分成数据包进行传输,并在这些数据包被接收后重新组包,而不关注接收方计算机的状态。由面向连接的协议(如Internet中的TCP)来确保数据的接收。

DHCP(Dynamic Host Configuration Protocol)动态主机配置协议 

它是在TCP/IP网络上使客户机获得配置信息的协议,它是基于BOOTP协议,并在BOOTP协议的基础上添加了自动分配可用网络地址等功能。这两个协议可以通过一些机制互操作。DHCP协议在安装TCP/IP协议和使用TCP/IP协议进行通迅时,必须配置IP地址、子网掩码、缺省网关三个参数,这三个参数可以手动配置,也可以使用DHCP自动配置。

Discard Protocol抛弃协议 

它的作用就是接收到什么抛弃什么,它对调试网络状态的一定的用处。基于TCP的抛弃服务,如果服务器实现了抛弃协议,服务器就会在TCP端口9检测抛弃协议请求,在建立连接后并检测到请求后,就直接把接收到的数据直接抛弃,直到用户中断连接。而基于UDP协议的抛弃服务和基于TCP差不多,检测的端口是UDP端口9,功能也一样。

Echo Protocol协议 

这个协议主要用于调试和检测中。这个协议的作用也十分简单,接收到什么原封发回就是了。它可以基于TCP协议,服务器就在TCP端口7检测有无消息,如果有发送来的消息直接返回就是了。如果使用UDP协议的基本过程和TCP一样,检测的端口也是7。

FTP(File Transfer Protocol)文件传输协议 

它是一个标准协议,是在计算机和网络之间交换文件的最简单的方法。像传送可显示文件的HTTP和电子邮件的SMTP一样,FTP也是应用TCP/IP协议的应用协议标准。FTP通常用于将网页从创作者上传到服务器上供人使用,而从服务器上下传文件也是一种非常普遍的使用方式。作为用户,您可以用非常简单的DOS界面来使用FTP,也可以使用由第三方提供的图形界面的FTP来更新(删除,重命名,移动和复制)服务器上的文件。现在有许多服务器支持匿名登录,允许用户使用FTP和ANONYMOUS作为用户名进行登录,通常可使用任何口令或只按回车键。

HDLC(High-Level Data Link Control)高层数据链路协议 

它是一组用于在网络结点间传送数据的协议。在HDLC中,数据被组成一个个的单元(称为帧)通过网络发送,并由接收方确认收到。HDLC协议也管理数据流和数据发送的间隔时间。HDLC是在数据链路层中最广泛最使用的协议之一。现在作为ISO的标准,HDLC是基于IBM的SDLC协议的,SDLC被广泛用于IBM的大型机环境之中。在HDLC中,属于SDLC的被称为通响应模式(NRM)。在通常响应模式中,基站(通常是大型机)发送数据给本地或远程的二级站。不同类型的HDLC被用于使用X.25协议的网络和帧中继网络,这种协议可以在局域网或广域网中使用,无论此网是公共的还是私人的。

HTTP1.1(Hypertext Transfer Protocol Vertion 1.1)超文本传输协议-版本1.1 

它是用来在Internet上传送超文本的传送协议。它是运行在TCP/IP协议族之上的HTTP应用协议,它可以使浏览器更加高效,使网络传输减少。任何服务器除了包括HTML文件以外,还有一个HTTP驻留程序,用于响应用用户请求。您的浏览器是HTTP客户,向服务器发送请求,当浏览器中输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了HTTP请求,此请求被送往由IP地址指定的URL。驻留程序接收到请求,在进行必要的操作后回送所要求的文件。

HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 

它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的完全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。

ICMP(Internet Control Message Protocol)Internet控制信息协议 

它是一个在主机和网关之间消息控制和差错报告协议。ICMP使用IP数据报,但消息由TCP/IP软件处理,对于应用程序使用者是不可见的。在被称为Catenet的系统中,IP协议被用作主机到主机的数据报服务。网络连接设备称为网关。这些网关通过网关到网关协议(GGP)相互交换用于控制的信息。通常,赡养或目的主机将和源主机通信,例如,为报告在数据报过程中的错误。为了这个目的才使用了ICMP,它使用IP做于底层支持,好象它是一个高层协议,而实际上它是IP的一部分,必须由其它IP模块实现。ICMP消息在以下几种情况下发送:当数据报不能到达目的地时,当网关的已经失去缓存功能,当网关能够引导主机在更短路由上发送。IP并非设计为设计为绝对可靠,这个协议的目的是为了当网络出现问题的时候返回控制信息,而不是使IP协议变得绝对可靠,并不保证数据报或控制信息能够返回。一些数据报仍将在没有任何报告的情况下丢失。

IMAP4(Internet Mail Access Protocol Version 4)Internet邮件访问协议-版本4 

它是用于从本地服务器上访问电子邮件的标准协议,它是一个C/S模型协议,用户的电子邮件由服务器负责接收保存。IMAP4改进了POP3的不足,用户可以通过浏览信件头来决定是不是要下载此信,还可以在服务器上创建或更改文件夹或邮箱,删除信件或检索信件的特定部分。在用户访问电子电子邮件时,IMAP4需要持续访问服务器。在POP3中,信件是保存在服务器上的,当用户阅读信件时,所有内容都会被立刻下载到用户的机器上。我们有时可以把IMAP4看成是一个远程文件服务器,把POP3可以看成是一个存储转发服务。

NNTP(Network News Transfer Protocol)网络新闻传输协议 

NNTP同POP3协议一样,也存在某些局限性。

IOTP(Internet Open Trading Protocol)Internet开放贸易协议 

Internet开放贸易协议是一系列的标准,它使电子购买交易在客户,销售商和其它相关部分都是一致的,无论使用何种付款系统。IOTP适用于很多的付款系统,如SET,DigiCash,电子支票或借记卡。付款系统中的数据封装在IOTP报文中。IOTP处理的交易可以包括客户、销售商、信用支票、证明、银行等部分。IOTP使用XML语言(ExtensibleMarkup Language)来定义包含在交易中的数据。

IPv6(Internet Protocol Version 6)Internet协议-版本6 

它是Internet协议的最新版本,已作为IP的一部分并被许多主要的操作系统所支持。IPv6也被称为“Ipng”(下一代IP),它对现行的IP(版本4)进行重大的改进。使用IPv4和IPv6的网络主机和中间结点可以处理IP协议中任何一层的包。用户和服务商可以直接安装IPv6而不用对系统进行什么重大的修改。相对于版本4,新版本的最大改进在于将IP地址从32位改为128位,这一改进是为了适应网络快速的发展对IP地址的需求,也从根本上改变了IP地址短缺的问题。简化IPv4首部字段被删除或者成为可选字段,减少了一般情况下包的处理开销以及IPv6首部占用的带宽。改进IP 首部选项编码方式的修改导致更加高效的传输,在选项长度方面更少的限制,以及将来引入新的选项时更强的适应性。加入一个新的能力,使得那些发送者要求特殊处理的属于特别的传输流的包能够贴上标签,比如非缺省质量的服务或者实时服务。为支持认证,数据完整性以及(可选的)数据保密的扩展都在IPv6中说明。本文描述IPv6基本首部以及最初定义的IPv6 扩展首部和选项。还将讨论包的大小问题,数据流标签和传输类别的语法,以及IPv6对上层协议的影响。IPv6 地址的格式和语法在其它文章中单独说明。IPv6版的 ICMP 是所有IPv6应用都需要包含的。

IPX/SPX(Internetwork Packet Exchange/Sequential PacketExchange)互连网包交换/顺序包交换 

它是由Novell提出的用于客户/服务器相连的网络协议。使用IPX/SPX协议能运行通常需要NetBEUI支持的程序,通过IPX/SPX协议可以跨过路由器访问其他网络。

MIME(Multi-Purpose Internet Mail Extensions)多功能Internet邮件扩展 

MIME是扩展SMTP协议,是1991年Nathan Borenstein向IETF提出。在传输字符数据的同时,允许用户传送另外的文件类型,如声音,图像和应用程序,并将其压缩在MIME附件中。因此,新的文件类型也被作为新的被支持的IP文件类型。

NetBEUI(NetBIOS Enhanced UserInterface)网络基本输入输出系统扩展用户接口 

NetBEUI协议是IBM于1985年提出。NetBEUI主要为20到200个工作站的小型局域网设计的,用于NetBEUI、LanMan网、Windows For Workgroups及Windows NT网。NetBEUI是一个紧凑、快速的协议,但由于NetBEUI没有路由能力,即不能从一个局域网经路由器到另一个局域网,已不能适应较大的网络。如果需要路由到其他局域网,则必须安装TCP/IP或IPX/SPX协议。

OSPF(Open Shortest Path First)开放最短路优先 

OSPF是用于大型自主网络中替代路由信息协议的协议标准。象RIP一样,OSPF也是由IETF设计用作内部网关协议族中的一个标准。在使用OSPF时网络拓朴结构的变化可以立即在路由器上反映出来。不象RIP,OSPF不是全部当前结点保存的路由表,而是通过最短路优先算法计算得到最短路,这样可以降低网络通信量。如果您熟悉最短路优先算法就会知道,它是一种只关心网络拓朴结构的算法,而不关心其它情况,如优先权的问题,对于这一点,OSPF改变了算法使它根据不同的情况给某些通路以优先权。

POP3(Post Office Protocol Version 3)邮局协议-版本3 

它是一个关于接收电子邮件的客户/服务器协议。电子邮件由服务器接收并保存,在一定时间之后,由客户电子邮件接收程序检查邮箱并下载邮件。POP3它内置于IE和Netscape浏览器中。另一个替代协议是交互邮件访问协议(IMAP)。使用IMAP您可以将服务器上的邮件视为本地客户机上的邮件。在本地机上删除的邮件还可以从服务器上找到。E-mail 可以被保存在服务器上,并且可以从服务器上找回。

PPP(Point to Point Protocol)点对点协议 

它是用于串行接口的两台计算机的通信协议,是为通过电话线连接计算机和服务器而彼此通信而制定的协议。网络服务提供商可以提供您点对点连接,这样提供商的服务器就可以响应您的请求,将您的请求接收并发送到网络上,然后将网络上的响应送回。PPP是使用IP协议,有时它被认为是TCP/IP协议族的一员。PPP协议可用于不同介质上包括双绞线,光纤和卫星传输的全双工协议,它使用HDLC进行包的装入。PPP协议既可以处理同步通信也可以处理异步通信,可以允许多个用户共享一个线路,又可发进行SLIP协议所没有的差错控制。

RIP(Routing Infomation Protocol)路由信息协议 

RIP是最早的路由协议之一,而且现在仍然在广泛使用。它从类别上应该属于内部网关协议(IGP)类,它是距离向量路由式协议,这种协议在计算两个地方的距离时只计算经过的路由器的数目,如果到相同目标有两个不等速或带宽不同的路由器,但是经过的路由器的个数一样,RIP认为两者距离一样,而实际传送数据时,很明显一个快一个慢,这就是RIP协议的不足之处,而OSPF在它的基础上克服了RIP的缺点。

SLIP(Serial Line Internet Protocol)串行线路Internet协议 

它是一个TCP/IP协议,它用于在两台计算机之间通信。通常计算机与服务器连接的线路是串行线路,而不是如T1的多路线路或并行线。您的服务器提供商可以向您提供SLIP连接,这样他的服务器就可以响应您的请求,并将请求发送到网络上,然后将网络返回的结果送至您的计算机。现已逐渐被功能更好的PPP点对点协议所取代。

SMB protocol (Server Message Block protocol)服务器信息块协议 

它提供了运行在客户计算机上的程序请求网络上服务器服务的方法,它可以用在TCP/IP协议之上,也可以用上网络协议如IPX和NetBEUI之上。使用SMB协议时,应用程序可以访问远程计算机上的资源,包括打印机,命名管道等。因此,用户程序可以读,创建和更新在远程服务器上的文件,也可以和已经安装SMB协议的计算机通信。Microsoft Windows for Workgroups, Windows 95 和Windows NT都提供了SMB协议客户和服务器的支持。  对于UNIX系统,共享软件Samba也提供了类似的服务。

LMTP(Local Mail Transfer Protocol)本地邮件传输协议 

SMTP和SMTP服务扩展(ESMTP)提供了一种高效安全传送电子邮件的方法,而在实现SMTP时需要管理一个邮件传送队列,在有些时候这样做可能有麻烦,需要一种没有队列的邮件传送系统,而LMTP就是这样的一个系统,它使用ESMTP的语法,而它和ESMTP可不是一回事,而LMTP也不能用于TCP端口25。LMTP协议与SMTP和ESMTP协议很象,为了避免和SMTP和ESMTP服务混淆,LMTP使用LHLO命令开始一个LMTP会话,它的基本语法和HELO和EHLO命令相同。对于DATA命令来说,如果RCPT命令失败,DATA命令必须返回503,并失败。每个DATA命令碰到"."时,服务器必须对所有成功的RCPT命令返回应答,这和平常的SMTP系统不同,而且顺序必须和RCPT成功的顺序一致,即使对于同一个向前路径来说有许多RCPT命令,也必须返回多个成功应答。这就意味着,服务器返回的确认应答是指服务器把邮件地发送到接收者或另一个转发代理。

SMTP(Simple Mail Transfer Protocol)简单邮件传送协议 

它是用来发送电子邮件的TCP/IP协议。它的内容由IETF的RFC 821定义。另外一个和SMTP相同功能的协议是X.400。SMTP的一个重要特点是它能够在传送中接力传送邮件,传送服务提供了进程间通信环境(IPCE),此环境可以包括一个网络,几个网络或一个网络的子网。理解到传送系统(或IPCE)不是一对一的是很重要的。进程可能直接和其它进程通过已知的IPCE通信。邮件是一个应用程序或进程间通信。邮件可以通过连接在不同IPCE上的进程跨网络进行邮件传送。更特别的是,邮件可以通过不同网络上的主机接力式传送。

Talk协议 

Talk协议能使远程计算机上的两个用户以实时方式进行通信。

TCP/IP(Transmission Control Protocol/Internet Protocol)传输控制协议/Internet协议 

TCP/IP协议起源于美国国防高级研究计划局。提供可靠数据传输的协议称为传输控制协议TCP,好比货物装箱单,保证数据在传输过程中不会丢失;提供无连接数据报服务的协议称为网络协议IP,好比收发货人的地址姓名,保证数据到达指定的地点。TCP/IP协议是互联网上广泛使用的一种协议,使用TCP/IP协议的因特网等网络提供的主要服务有:电子邮件、文件传送、远程登录、网络文件系统、电视会议系统和万维网。它是Interent的基础,它提供了在广域网内的路由功能,而且使Internet上的不同主机可以互联。从概念上,它可以映射到四层:网络接口层,这一层负责在线路上传输帧并从线路上接收帧;Internet层,这一层中包括了IP协议,IP协议生成Internet数据报,进行必要的路由算法,IP协议实际上可以分为四部分:ARP,ICMP,IGMP和IP;再上向就是传输层,这一层负责管理计算机间的会话,这一层包括两个协议TCP和UDP,由应用程序的要求不同可以使用不同的协议进行通信;最后一层是应用层,就是我们熟悉的FTP,DNS,TELNET等。熟悉TCP/IP是熟悉Internet的必由之路。

TELNET Protocol虚拟终端协议 

TELNET协议的目的是提供一个相对通用的,双向的,面向八位字节的通信方法,它主要的目标是允许接口终端设备的标准方法和面向终端的相互作用。是让用户在远程计算机登录,并使用远程计算机上对外开放的所有资源。

Time Protocol时间协议 

该协议提供了一个独立于站点的,机器可读的日期和时间信息。时间服务返回的是以秒数,是从1900年1月1日午夜到现在的秒数。设计这个协议的一个重要目的在于,网络上的许多主机并没有时间的观念,在分布式的系统上,我们可以想一想,北京的时间和东京的时间如何分呢?主机的时间往往可以人为改变,而且因为机器时钟内的误差而变得不一致,因此需要使用时间服务器通过选举方式得到网络时间,让服务器有一个准确的时间观念。不要小看时间,这对于一些以时间为标准的分布运行的程序简单是太重要了。这个协议可以工作在TCP和UDP协议下。时间是由32位表示的,是自1900年1月1日0时到当前的秒数,我们可以计算一下,这个协议只能表示到2036年就不能用了,但是我们也知道计算机发展速度这么快,到时候可能就会有更好的协议代替这个协议.

TFTP(Trivial File Transfer Protocol)小文件传输协议 

它是一个网络应用程序,它比FTP简单也比FTP功能少。它在不需要用户权限或目录可见的情况下使用,它使用UDP协议而不是TCP协议。

UDP(User Datagram Protocol)用户数据报协议 

它是定义用来在互连网络环境中提供包交换的计算机通信的协议,此协议默认认为网路协议(IP)是其下层协议。UDP是TCP的另外一种方法,象TCP一样,UDP使用IP协议来获得数据单元(叫做数据报),不象TCP的是,它不提供包(数据报)的分组和组装服务。而且,它还不提供对包的排序,这意味着,程序程序必须自己确定信息是否完全地正确地到达目的地。如果网络程序要加快处理速度,那使用UPD就比TCP要好。UDP提供两种不由IP层提供的服务,它提供端口号来区别不同用户的请求,而且可以提供奇偶校验。在OSI模式中,UDP和TCP一样处于第四层,传输层。

UUCP(UNIX-to-UNIX Copy Protocol)UNIX至UNIX拷贝协议 

它是一组用于在不同UNIX系统之间复制(传送)文件或传送用于其它UNIX系统执行命令的一组指令,是UNIX网络的基础。

X.25协议 

它是CCITT标准的通讯协议,制定于1976年,用于定义同步传输的数据包。是国际上分组数据网(PDN)上使用的一种协议。它允许不同网络中的计算机通过一台工作在网络层的中间计算机进行相互通信。

X.400协议 

它是一个电子邮件协议,它由ITU-TS制定,它可以发挥和SMTP相同的功能。X.400在欧洲和加拿大使用比较多,它实际上是一个标准集,每个标准的序号都在此400到499之间。X.400地址能够提供许多SMTP地址所不能够提供的功能,因此X.400的地址会比较长而且比较麻烦。X.400的确提供了比SMTP更多的功能,然而这些功能却很少能够用到。X.400的主要部分有以下几个:用户代理(UA),消息传送代理(MTA)和消息传输系统(MTS)。

Z39.50协议 

它是一个标准的通信协议,它用于检索和获得在线数据库中的著书目录。Z39.50用于在互联网上检索图书馆的在线公共访问目录(Online Public Access Catalogues,OPAC),也可以用于把多个分离的OPAC连接起来,它是ANSI/NISO标准。

Java基础学习总结:网络编程之(四)TCP与UDP的区别及常见的网络协议(转)相关推荐

  1. tcp udp区别优缺点_Linux网络编程面试题--tcp和udp的区别

    (1)TCP是基于连接的,UDP是基于无连接的. (2)TCP的数据是可靠的,UDP的数据是不可靠的. (3)TCP的数据是有序的,UDP的数据是无序的. (4)TCP不保存用户边界,UDP保存用户边 ...

  2. 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结

    Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 4.1 class作为成员变量 4.2 interface作为成 ...

  3. 基于socket网络编程技术实现TCP和UDP的流程详解及实例

    具体函数讲解太多,根据程序自行分析. 可以参考这篇文章: https://blog.csdn.net/qq_41687938/article/details/119102328?spm=1001.20 ...

  4. Java基础学习之函数式编程Comsumer接口(JDK8)

    前言 从毕业到现在正好三年,高难度的项目做了不少,但是基础这个东西一段时间不接触就会忘得一干二净.话不多说,开始今天的学习! 1. Consumer接口 接触过"消费者",&quo ...

  5. Java基础-学习笔记(五)——面向过程和面向对象的区别

    学习面向对象的语言,要弄清楚面向对象,首先要从理解面向过程开始. 回想起之前在学习C语言时,每次拿到一个题目,首先想到的是,先分析出解决问题所需要的步骤,每一个功能点,用一个函数来表示,使用的时候一个 ...

  6. 网络编程2(TCP、UDP)

    多路复用 多路复用 select pselect poll epoll 多路复用 ​ 使用一个进程(且只有一个主线程)同时监控若干个socket文件描述符的读写,这种读写模式叫做多路复用 ​ 多用于T ...

  7. 【Socket网络编程】4.tcp和udp的客户端和服务端收发流程

    tcp和udp的客户端和服务端收发流程 1.udp服务器流程: 1.创建serverSocket 2.设置服务器地址 serverAddr 3.将serverSocket和serverAddr绑定 b ...

  8. Java基础学习——第十四章 网络编程

    Java基础学习--第十四章 网络编程 一.网络编程概述 计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信 ...

  9. Java基础学习——第六章 面向对象编程(下)

    Java基础学习--第六章 面向对象编程(下) 一.关键词:static 1. static关键字的引入 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new ...

最新文章

  1. HTML基本介绍与操作
  2. JQuery UI 1.8.13发布看看有哪些变动
  3. mysql opti_MySQL基础操作
  4. rsync 配置详解
  5. Android实用笔记——使用Spinner实现下拉列表
  6. @scheduled注解配置时间_@Scheduled注解
  7. V-rep学习笔记:机器人逆运动学数值解法(Damped Least Squares / Levenberg-Marquardt Method)...
  8. php cms选择,php cms 选择哪个好?
  9. CentOS 安装 PPTP ××× 客户端安装脚本
  10. 逆Laplace数值逆变换
  11. 条码打印工具-Bartender的使用
  12. 如何设置.net控件SplitContainer平均分配
  13. Pycharm使用小Tips
  14. 个人博客或网站快速被搜索引擎收录
  15. 计算机进制之间的转换(2进制、10进制、8进制、16进制)
  16. Shel编程之条件语句 条件 if ,case语句
  17. python 矩阵求转置、行列式、迹、求逆
  18. 使用Qt通过Post发送Json格式数据
  19. MRI影像学习笔记(一)
  20. opencv-python 去除图片文字

热门文章

  1. pcap2sipp使用介绍
  2. [C语言] 利用阶乘公式编程计算e的近似值,直到最后一项的绝对值小于10-5时为止,输出e的值并统计累加的项数。输出e值要求小数点后必须保留6位有效数字(四舍五入),不足补零。
  3. 项目管理 : 工程合同管理中风险识别及防控措施
  4. 32位计算机为什么是八位,一文看懂8位,16位和32位单片机的区别
  5. dell服务器怎么看故障信息,系统事件日志中的PowerEdge服务器错误消息以及如何查看它们...
  6. c语言数据类型ppt,【C语言】基本数据类型.ppt
  7. Pandas中pivot的使用
  8. 国内开源erp的天花板是哪一款?
  9. erp系统开源_要考虑的9大开源ERP系统
  10. 按下开机键后,电脑都干了些什么?