linux_网络编程

目录

一、为什么要学习网络编程?

二、Linux网络编程

1. 网络编程​

2. Socket套接字

3.端口号的作用 

三、TCP与UDP的区别

四、字节序

1.相关概念

2.为什么要用字节序?

3.字节序转换API

五、总结 


一、为什么要学习网络编程?

我们前面学习了进程间通信的方式,我们回顾一下都有哪些:

正是进程间通信方式无法实现多机通讯的缺陷,我们正要学习网络编程,下面我们一起正式学习网络编程相关知识。 

二、Linux网络编程

1. 网络编程

2. Socket套接字

3.端口号的作用 

一台拥有IP地址的主机可以提供多个服务,比如web服务、FTP服务、SMTP服务。

”IP地址+端口号“区分不同的服务;

服务器一般都通过端口号来识别。

三、TCP与UDP的区别

1.TCP面向连接,UDP无连接,即发送数据之前,不需要建立连接。我们前面提到的TCP就好比A与B打电话,而UDP好比A给B发短信;

2.TCP提供可靠的服务,无差错、不丢失、不重复、且按序到达;UDP尽最大努力交付,即不保证可靠交付。

3.TCP面向字节流,UDP面向报文,UDP没有拥塞控制;

4.每一条TCP连接只能是点到点的,UDP支持一对一、一对多、多对一和多对多的交互通信。

5.TCP首部开销20字节:UDP的首部开销小,只有8个字节;

6.TCP的逻辑通信信道是全双工的可靠通信,UDP则是半双工的不可靠通信(全双工和半双工继续借助打电话理解,全双工就是两人打电话,A跟B说话的同时,B可以给A说;半双工就是A给B打电话的同时B不能给A电话,那样是打不通的,这大家应该能理解)。

四、字节序

1.相关概念

字节序:多字节数据在计算机内存中存储或网络传输时多字节的存储顺序。

LE:小端字节序:按低序字节存储在起始地址

BE:大端字节序=网络字节序:按高序字节存储在起始地址

详细参考这篇博文:字节序详细解读_石子君的博客-CSDN博客

2.为什么要用字节序?

在进行数据交换的时候,A电脑上的A进程要把数据发出去,而电脑X86系列的CPU都是小端字节序,而网络字节序与小端字节序是相反的存储顺序,网络数据给另一台电脑就会发生错误。

3.字节序转换API


//htons函数 发 将主机字节序的端口 转换成 网络字节序的端口
uint16_t htons(uint16_t host16bitvalue);    //返回网络字节序的值
//htonl函数 发 将主机字节序的IP地址 转换成网络字节序的IP地址
uint32_t htonl(uint32_t host32bitvalue);    //返回网络字节序的值
//ntohs函数 收 将网络字节序的端口 转换成 主机字节序的端口
uint16_t ntohs(uint16_t net16bitvalue);     //返回主机字节序的值
//ntohl函数 收 将网络字节序的IP地址
uint32_t ntohl(uint32_t net32bitvalue);     //返回主机字节序的值

五、总结 

通过本次学习,我们要知道我们为什么要学习网络编程,它和进程间通信的方式有什么本质区别,理解网络编程中地址包括IP地址和端口号,它们的作用是什么,以及TCP与UDP的区别,再到后面关于字节序的相关知识点。下篇博客我们学习Socket网络编程!记得来看哟!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星筠君辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值