浅析TCP与UDP

无连接运输:UDP

UDP是面向无连接的协议,它只负责将数据传输给客户端,而不会保证数据的完整性。这种特性导致其在Web应用程序方面很是吃亏,所以说Web应用程序使用都为TCP连接,但是在音频传播和实时视频传播方面,UDP确是可以做到比TCP更好的效果,虽然也会发生数据丢失,但是少量数据的丢失对于声音和视频的效果显示没有太大的影响.

UDP的套接字

一个UDP套接字由一个二元组来进行标识,该二元组包括一个目的IP地址和一个目的端口号.

  • 源端口号用途
    当A到B的报文段中,源端口号作为返回地址的一部分,即当B要回发一个报文段给A时,B到A的报文段的目的端口号便从A到B的源端口号中取值.

UDP的优点

  • 关于何时、发送什么数据的应用层控制更加精细
    使用UDP的时候,应用程序只需要将数据交给UDP,然后UDP将其打包进报文段,然后传递给网络层,不管数据能不能到达,UDP依然会发送没有发送的数据,而TCP不同,TCP有一个数据重传机制,当客户端的TCP未收到目的主机的确认报文段或者发送时间超时的时候,TCP会重新发送报文段,而中间的等待过程可能会很漫长。TCP还有一个拥塞控制机制,当源和目的主机之间的一条或多条链路变得极度拥塞的时候,TCP就会遏制运输层TCP发送方,来解决拥塞情况.
  • 不需要建立连接
    UDP发送数据的时候不经过任何准备,直接将数据打包进报文段然后传递给网络层即可,而TCP需要和目的主机间建立连接,即三次握手,UDP少去了建立连接的时延,这可能是DNS协议运行在UDP而不是运行在TCP上的主要原因.
  • 无连接状态
    TCP在端系统中需要维护连接状态,因为TCP需要提供可靠的数据传输服务和拥塞控制服务,而UDP不需要维护连接状态,所以说,有些应用程序使用UDP一般能支持更多的在线用户.
  • 分组首部开销小
    TCP每个报文段含有20字节的首部开销,而UDP只有8字节的首部开销.

UDP报文段结构

UDP报文段结构
UDP首部包括源端口号、目的端口号、长度、检验和.

  • 长度
    指示了在UDP报文段(包括UDP首部和数据)中的字节数.
  • 检验和
    接收方通过检查检验和来检查该报文段是否出现差错.

面向连接的服务TCP

TCP是面向连接的协议,在两个进程之间要发生数据传输的时候,需要在两个进

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP(传输控制协议)是一种面向连接的协议,用于在网络上可靠地传输数据。它提供了数据的可靠传输、流量控制和拥塞控制等功能,是互联网的核心协议之一。 在Node.js中,使用内置的net模块可以轻松地创建TCP服务器和客户端。下面是一个简单的TCP服务器示例: ```javascript const net = require('net'); const server = net.createServer((socket) => { console.log('client connected'); socket.on('data', (data) => { console.log(`received data: ${data}`); socket.write(`echo: ${data}`); }); socket.on('close', () => { console.log('client disconnected'); }); }); server.listen(3000, () => { console.log('server started on port 3000'); }); ``` 这个服务器会监听本地的3000端口,当有客户端连接时,会打印出“client connected”的信息。当客户端发送数据时,服务器会收到这些数据并将其打印到控制台上,然后将“echo: ”加在数据前发送回客户端。当客户端断开连接时,服务器会打印“client disconnected”的信息。 下面是一个简单的TCP客户端示例: ```javascript const net = require('net'); const client = new net.Socket(); client.connect(3000, 'localhost', () => { console.log('connected to server'); client.write('hello, server'); }); client.on('data', (data) => { console.log(`received data: ${data}`); client.destroy(); }); client.on('close', () => { console.log('disconnected from server'); }); ``` 这个客户端会连接到本地的3000端口,并发送“hello, server”的消息。当客户端收到服务器的响应时,会打印出这些数据,并断开连接。 总的来说,TCP在网络通信中扮演着非常重要的角色,Node.js内置的net模块提供了简单易用的TCP套接字接口,使得我们可以轻松地创建TCP服务器和客户端。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值