作业2

TCP与UDP的联系:

1、TCP和UDP是OSI模型中的运输层中的协议。

2、TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的bai通信传输。

TCP与UDP的基本区别:

1、基于连接与无连接。
2、TCP要求系统资源较多,UDP较少。
3、UDP程序结构较简单。
4、流模式(TCP)与数据报模式(UDP)。
5、TCP保证数据正确性,UDP可能丢包。
6、TCP保证数据顺序,UDP不保证。
7、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接。
8、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。
9、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)。
10、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
11、TCP首部开销20字节;UDP的首部开销小,只有8个字节。
12、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,完成第四层传输层所指定的功能。
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。

 

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

网络字节序:

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

主机字节序:

主机字节序,即CPU存储数据时采用的字节顺序。不同的CPU设计时采用的字节序是不同的,谈到字节序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86与x86_64(该指令集由AMD率先设计推出)系列CPU。PowerPC系列采用big endian方式存储数据,而x86与x86_64系列则采用little endian方式存储数据。平常大多数PC与服务器如果使用的是Intel与AMD CPU,一般都是little endian。

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

#include <arpa/inet.h>
int inet_aton(const char *strptr, struct in_addr *addrptr);
in_addr_t inet_addr(const char *strptr);
char* inet_ntoa(struct in_addr inaddr);

inet_aton将strptr所指c字符串转换成一个32位的网络字节序二进制值,并通过addrptr指针来存储。成功返回1,否则返回0.

inet_ntoa将一个32位的网络字节序二进制IPV4地址转换成相应的点分十进制数串。由于返回值所指向的字符串驻留在静态内存中,所以该函数是不可重入的。

#include <arpa/inet.h>
int inet_pton(int family, const char* strptr, void *addrptr);
const char* inet_ntop(int family, const void* addrptr, char* strptr, size_t len);

这两个函数的family参数可以是AF_INET、AF_INET6。如果以不支持的地址族作为这个参数,返回一个错误,erron置为EAFNOSUPPORT。

inet_pton尝试转换strptr所指字符串,并将二进制结果存放在addrptr中,成功返回1,失败返回0.

inet_ntop进行相反的转换,从数值格式(addrptr)转换到表达格式(strptr)。len参数是目标存储单元的大小,以免溢出其调用者的缓冲区。调用陈宫时strptr就是这个函数的返回值。

 

posted @ 2022-09-30 10:35  lidonton  阅读(68)  评论(0)    收藏  举报