流式套接字(TCP)、数据报套接字(UDP)


套接字是网络通信的基本构件,提供了不同主机间进程双向通信的端点。如果电话,只有当一方拨通另一方时,双方才能建立对话。通过套接字编程,程序可以跳过复杂的网络底层协议和结构,直接编制与平台无关的应用程序。目前,套接字已逐渐成为网络编程的通用接口。  

  套接字存在于其特定的通信域(即协议族)中,只有隶属于同一协议族的套接字才能建立对话。一般情况下除非通信协议支持,只有相同类型的套接字才能相互传递数据。从套接字主要有两种类型:流式套接字(TCP)、数据报套接字(UDP)。         



        流式套接字(SOCK_STREAM):该类套接字提供了面向连接的、可靠的、数据无错并且无重复的数据发送服务,而且发送的数据时按顺序被接受的。所有利用该套接字进行传递的数据均被视为连续的字节流且无长度限制。这对数据的稳定性、正确性和发送/接受顺序要求严格的应用十分适用,TCP协议使用该类接口,但其对线路的占用率相对比较高。流式套接字的实现屡见不鲜,如远程登录(TELNET)、文件传输协议(FTP)等使用了流式套接字。  

                                  

     数据报套接字(SOCK_DGRAM):数据报套接字提供了面向无连接的服务。它独立地以数据包形式发送数据(数据包长度不能大于32KB),不提供正确性检查,也不保证各数据包的发送顺序,因此可能出现数据的重发、丢失等现象,并且接受顺序由具体路由决定。然而,数据报的实现对网络线路占有率较低,NFS(网络文件系统)采用此类套接字,在TCP/IP 协议族中,UDP(UserDatagramProtocol)使用该类接口。


TCP

TCP是面向连接的通信协议,通过 三次握手 建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。
TCP提供的是一种可靠的 数据流 服务,采用“带重传的肯定确认”技术来实现传输的可靠性。

UDP

   UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。视频等应用便是使用UDP协议,因此常常会在网络卡顿时,视频会出现断断续续的丢包现象。

    UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。
     欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。

层次
TCP/IP协议不是 TCPIP这两个协议的合称,而是指因特网整个TCP/IP协议族。

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值