TCP与UDP||网络字节序与主机字节序

一、

TCP和UDP的区别:

1、udp不一定提供可靠的数据传输,该协议不能保证数据准确无误地到达目的地;

2、tcp的目的是提供可靠的数据传输,并在相互进行通信的设备或服务之间保持一个虚拟连接;

3、tcp在数据包接收无序,丢失或在交付期间被破坏时,负责数据的恢复;

4、tcp面向连接,如打电话要先拨号建立连接而udp则是无连接的,即发送数据之前不需要建立连接。

5、TCP要求系统资源较多,UDP较少。

6、TCP首部开销20字节;UDP的首部开销小,只有8个字节。

TCP和UDP的联系:

1、tcp和udp都是运输层协议;

2、都是建立在ip之上的 TCP叫做流式套接字,UDP是报文套接字

 

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

1、什么是字节序?

字节序,即字节在电脑中存放时的序列与输入(输出)时的序列是先到的在前还是后到的在前。

2、字节序分类

大端字节序和小端字节序:

        大端字节序存储时值的高位存储在较小的地址,值的低位存储在较大的地址。

        小端字节序存储时值的高位存储在较大的地址,值的低位存储在较小的地址

3、网络字节序

网络字节序转化为主机字节序时,一定要注意是否需要转换。网络字节序是确定的。

网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。网络字节顺序采用big-endian(大端)排序方式。

4、转换函数

为了进行转换 bsd socket提供了转换的函数 有下面四个

htons把unsigned short类型从主机序转换到网络序

htonl 把unsigned long类型从主机序转换到网络序

ntohs 把unsigned short类型从网络序转换到主机序

ntohl 把unsigned long类型从网络序转换到主机序

在使用little endian的系统中 这些函数会把字节序进行转换

在使用big endian类型的系统中 这些函数会定义成空宏

 

 

posted @ 2022-10-09 20:34  一点也不饿  阅读(282)  评论(0)    收藏  举报