linux 网络编程(1)初识网络编程

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

前面学习的进程间通信:管道、消息队列、共享内存、信号、信号量
这5种通信方式都是依靠Liunx内核。他们的一个缺点就是,这些通信方式只能在单机运行。

所以引入网络编程可以实现多机通讯

网络的通讯 Linux与Android、IOS、各种单片机,或者是Android对Android等等。

网络编程的主要的问题:

网络通讯:通过通信双方地址。地址由IP地址和端口号组成。
IP地址:负责定位主机。
端口号:负责定位主机上的特定应用(主机上有着多种协议)。

端口号作用
一台拥有IP地址的主机可以提供许多服务,比如Web服务、 FTP服务、SMTP服务等。这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,:因为IP地址与网络服务的关系是
一对多的关系。实际上是通过"IP地址+端口号"来区分不同的服务的。

端口提供了种访问通道
服务器一般都是通过知名端口号来识别的。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21.每个Telnet服务器的TCP端口号都是23,每个TFTP(简单文件 传送协议)服务器的UDP端口号都是69

找到主机后如何可靠高效地进行数据传偷?

答:网络通讯协议,有两套参考模型
OSI参考模型:模型过于理性化,未能在因特网上进行广泛推广
TPC/IP参考模型(TPC/IP协议):事实上的国际标准。———应用层、传输层、网络层、网络接口层

Socket(套接字)

Socket在Linux环境下,用于表示进程间网络通信的特殊文件类型。(类似于open函数中的fd文件描述符)

Socket(套接字)主要用到的协议
1、TCP(面向连接)双方必须连接成功才能发数据,类似打电话,主要用于对传输数据精确的情况,如传输指令。
2、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则是不可靠信道

字节序

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

常见序

大端(Big endian):低地址存高字节,高地址存低字节(将低序字节存储在起始地址),如:TCP/IP协议字节序(网络字节序)
小端(Little endian):低地址存低字节,高地址存高字节(将高序字节存储在起始地址),如:X86系列CPU字节序(计算机内部处理)

高低字节:例如0x12345678,左边字节为高字节,右边字节为低字节,0x12为高字节,0x78为低字节

对于数据 0x12345678,假设从地址0x4000开始存放,在大端和小端模式下,存放的位置分别为:

内存地址小端模式大端模式
0x40030x120x78
0x40020x340x56
0x40010x560x34
0x4000(低地址)0x780x12

采用Little-endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。

小端存储后:0x78563412 大端存储后:0x12345678

TCP/IP协议规定,网络数据流应采用大端字节序,即低地址存高字节,高地址存低字节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值