Linux网络编程(Socket)(一)

本文介绍了进程间通信的五种方式,包括管道、消息队列、共享内存、信号和信号量,并指出其局限性。接着,探讨了网络通信中的IP地址和端口号的角色,以及TCP和UDP协议的区别。TCP提供可靠连接,适合精确操作,而UDP速度快,适用于大量数据传输。端口号用于区分同一IP上的不同服务。最后,提到了字节序的概念,网络字节序是大端字节序。
摘要由CSDN通过智能技术生成

README
前面已经了解了进程间的五种通信方式

管道:通过父子进程进行通信
消息队列:通过内存中的链表进行通信
共享内存:在内核中开辟一块内存空间,是双方都可以使用
信号:A通过B的ID号来进行收发消息
信号量:对这些临界资源进行p、v操作控制

他们的特点是都依赖于内核进行单机内的进程间通信,当然缺点也就很明显了,无法多机通讯。
多机通讯,比如说Linux与Android的通讯、与IOS的通讯、与51单片机的通讯、或者说两个手机之间的通讯等等。
那么机器A如何找到机器B,在网络中就需要用到地址来寻找了,地址包括IP地址端口号两个。IP地址的作用想必大家都明白,一台机器,一部手机,一个设备对应一个IP地址,想要找到对哪一个设备进行操作就要用到IP地址。而端口号的作用是在找到IP之后,比如在一台PC上,有好几个服务,http服务、ftp服务、socket服务等等,那么客户端需要找哪一个呢?就需要用端口号来对接。
通过地址找到对应操作的设备之后,就要进行交流了,即数据交流,数据又涉及到协议,协议又分为http协议TCP协议UDP协议等等。协议说白了就是一种数据格式。比如说单片机和pc机之间要进行通信,就要用到串口协议。
简单说明一下我们在Linux中经常要用到的协议TCP协议和UDP协议。在Linux网络编程入门学习时通常用socket(套接字)进行学习。
socket中TCP协议是面向连接的,设备A与设备B进行连接,就好比两个人打电话,A打给B,B接通以后,两个人再进行交流。可靠。
UDP协议是面向报文的,或者说对于两个人来说,A与B之间的通信是发短信的形式来进行交流。不可靠。
这两者之间的区别为即时性,即A发送消息之后对于B的状态,TCP是两者之间相互建立连接之后进行交流,而UDP中A对于B的状态是不知道的,B有没有收到,或者B收到后有没有看到。所以说可靠不可靠。
那么UDP是否就一无是处呢?并不是,各自有各自的好处,有各自的应用场景,UDP的数据量大,比如说在打视频时用到的UDP,在丢失了几个数据时,无非时视频中的画面出现了一点马赛克之类的东西,影响不大,但是如果需要的信息量很准确,比如说传指令,传111,变成了010,那么影响就非常大了,所以说在精细的操作时我们用到的往往时TCP协议;在需要大量的数据,而且可靠度的要求并不太高,内存响应快数据量大,往往用到UDP协议。

TCP/UDP对比

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前,不需要建立连接。
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达,UDP尽最大努力交付,即不保证可靠交付。
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)。
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节。
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。
端口号作用

一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等。
这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系。
实际上是通过"IP地址+端口号"来区分不同的服务的。
端口提供了一种访问通道,
服务器一般都是通过知名端口号来识别的。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(简单文件传送协议)服务器的UDP端口号都是69。

字节序

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

常见序
1、Little endian (小端字节序):将低序字节存储在起始地址
2、Big endian(大端字节序):将高序字节存储在起始地址。
网络字节序=大端字节序

例子:在内存中双字(32位)0x01020304(DWORD)的存储方式
内存地址:
4000&4001&4002&4003
LE 04 03 02 01
BE 01 02 03 04在这里插入图片描述
Socket服务器和客户端的开发步骤
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值