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 @   一点也不饿  阅读(251)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示