首页 > 其他分享 >TCP与UDP的联系与区别(以及网络字节序与主机字节序的转换函数实践)

TCP与UDP的联系与区别(以及网络字节序与主机字节序的转换函数实践)

时间:2022-10-09 16:22:24浏览次数:90  
标签:UDP 字节 主机 TCP uint16 uint32

TCP与UDP的联系

TCP:是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。

UDP:是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。

TCP与UDP的区别

(1)TCP保证数据正确性与数据的顺序,而UDP不保证并可能丢包。

(2)TCP面向连接,即打电话要先拨号建立连接,而UDP是无连接的,即发送数据之前不需要建立连接。因此TCP可以提供可靠的服务,而UDP不行。通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。

(3)每一条TCP连接只能是点到点的,而UDP是支持一对一,一对多,多对一和多对多的交互通信。因此TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

(4)TCP是面向字节流的,实际上是TCP把数据看成一连串无结构的字节流。而UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低。这对实时应用很有用,如IP电话,实时视频会议等。

网络字节序与主机字节序的转换函数实践

Linux socket网络编程中,经常会使用下面四个C标准库函数进行字节序间的转换,并需要头文件arpa/inet.h。

1 #include <arpa/inet.h>
2 
3 uint32_t htonl(uint32_t hostlong);        //把uint32_t类型从主机序转换到网络序
4 uint16_t htons(uint16_t hostshort);        //把uint16_t类型从主机序转换到网络序
5 uint32_t ntohl(uint32_t netlong);        //把uint32_t类型从网络序转换到主机序
6 uint16_t ntohs(uint16_t netshort);        //把uint16_t类型从网络序转换到主机序

注:

1、在使用小端字节序的系统中,也就是主机字节序和网络字节序不同,所以这些函数会把字节序进行转换

2、在使用大端字节序的系统中,也就是主机字节序和网络字节序相同,不需要转换,这些函数会定义成空宏

代码参考:https://blog.csdn.net/K346K346/article/details/79053136

标签:UDP,字节,主机,TCP,uint16,uint32
From: https://www.cnblogs.com/Lsqq/p/16772557.html

相关文章

  • TCP三次握手与四次挥手
    三次握手:第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SENT状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),......
  • 网络字节序与主机字节序的转换函数实践
        CPU向内存保存数据的方式有2种,这意味着CPU解析数据的方式也分为2种:        ♦ 大端序(bigendian):高位字节存放到低位地址;      ......
  • 关于TCP和UDP的联系与区别以及网络字节序和主机字节序的转换函数实践
    1.TCP和UDP的相同点:TCP和UDP都是在网络层,都是传输层协议,都能都是保护网络层的传输,双方的通信都需要开放端口。2.TCP和UDP的不同点:TCP传输协议,是一种面向连接的、可靠的......
  • kubernetes Tcp流量可视化
    kubernetesTcp流量可视化使用k8spacket和grafana的nodegraph插件可以查看kubernetespod的TCP相关信息,如connection、bytes、和duration。下面是接收和响应的字节数信息......
  • 主机字节序和网络字节序的转换
    网络字节序:是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能被正确解释。网络字节序采用大端字节排序方式。......
  • TCP与UDP的联系与区别
     TCP和UDP是TCP/IP体系中运输层的两个协议。 TCP是传输控制协议,旨在适应支持多网络应用的分层协议层次结构。连接到不同但互连的计算机通信网络的主计算机中的成对进......
  • 网络字节序与主机字节序的转换函数(实践)
    什么是字节序?字节序,顾名思义,指字节在内存中存储的顺序。(1)小端字节序,数值低位存储在内存的低地址,高位存储在内存的高地址;(2)大端字节序,数值高位存储在内存的低......
  • 网络字节序与主机字节序的转换函数实践
     在Linux网络编程中,经常会遇见网络字节序喝主机字节序的相互转换,要了解他们,首先要知道什么是字节序。字节序,顾名思义,指字节在内存中存储的顺序。比如一个int32_t类型的......
  • TCP与UDP的联系与区别
    TCP与UDP是什么?TCP协议和UDP协议都是属于TCP/IP协议簇中的协议,且都是传输层中的协议。 TCP协议TCP协议是面向连接的协议。TCP传输有三个步骤:建立连接、传输数据、关闭......
  • 网络字节序与主机字节序的转换
    什么是字节序? 字节序指字节在内存中存储的顺序。字节序有两种:(1)小端字节序(Littleendinan),数值低位存储在内存的低地址,高位存储在内存的高地址;(2)大端字节序(Bigendian),数值......