Linux网络编程

17 篇文章 0 订阅
6 篇文章 0 订阅

网络编程

了解网络名词

IP地址:在网络中唯一标识的一台主机

port端口:在一台主机上标识一个进程

协议:通信双方的约定

网络协议:网络通信环境中数据的约定格式

通信协议标准:网络互联的前提

协议分层

在以往的了解知道协议具有多层,而分层就是为了协议分装,为了更好的使用。

对服务,接口,协议进行明确的划分;形成标准实现起来就容易了

OSI七层模型

物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

这是基础网络中的七层模型,这是一种理想的模型状态,在现代,大佬们将其划分为TCP/IP五层模型。将会话层,表示层,应用层全都规划到应用层。

网络1

TCP/IP五层模型

物理层,链路层,网络层,传输层,应用层

  • 物理层:负责光电信号的传输;比如以太网协议
  • 链路层:负责相邻设备之间的数据帧传输;比如Ethernet以太网协议;
  • 网络层:负责地址管理和路由选择;IP协议,典型设备(路由器:负责路由选择,选择数据发送到哪里去)
  • 传输层:负责端与端之间的数据传输;TCP协议,UDP协议
  • 应用层:负责应用程序之间的数据沟通(一般交由程序员来写);HTTP协议,FTP,SMTP,DNS,HTML

网络2

图中是我自己的理解,只能算一个初步的了解,不能算标准。

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).

应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装 (Encapsulation).

数据封装的过程如下图:

网络3

网络编程套接字
IP地址

IP是在网络上唯一标识一个主机

IPV4(uint32_t):对于IPV4来说,IP地址是一个4字节,32位的整数

通常使用“点分十进制”的字符串标识IP地址,例如:192.168.0.1;用点分割的每一个数字表示一个字节,范围是0-255。

IPV6(uchar ip[16]):IPV6目前还没有完全的被使用,可以先了解一下。它的地址长度128位,是IPV4地址长度的4倍。于是IPV4点分十进制不再适用,采用十六进制表示。

DHCP(Dynamic Host Configuration Protocol):动态主机配置协议是一个局域网的网络协议。DHCP服务可以自动给局域网中的主机自动分配一个IP地址。

NAT技术:因为ipv4的IP不够用,而发明的技术,实现地址转换,多人使用同一地址上网。但要区分公网IP和私网IP。

推荐一篇博客,什么是公网什么是私网:https://blog.csdn.net/gui951753/article/details/79210535

port端口

端口的类型是(uint16,065535;01024不推荐使用,一般多为系统占用端口)

端口是再网络上唯一标识一个进程

网络程序分为了客户端和服务端,主动发起的一方是客户端,被动再指定位置接收的一方是服务端,而且服务端被动的接收地址必须是固定不变的。

一个端口只能被一个进程占用;一个进程可以使用多个端口

在发送数据的过程中,每条数据都一定包含了五元组:源IP,源端口,目的IP,目的端口,协议

网络字节序

字节序:cpu在内存中对数据存取的顺序

在以往的学习中,我们了解过大端与小端这两种字节序。

简单回忆一下。小端是低地址放低位,高地址放高位;大端是低地址放高位,高地址放低位

在网络中,存在主机字节序,它是当前计算机的字节序,大小端这取决于cpu架构

因此为了传输数据的我们要保证两端主机字节序相同,如果不同,那么就会造成数据二义性。所以保证一个程序的可移植性,通信双方必须使用网络字节序进行通信。在网络通信中,数据的字节序转换主要是针对数据存储大于一个字节类型的数据

网络字节序,一般使用大端字节序。通过联合体判断。

传输层协议(简单了解)

**TCP:**传输控制协议,面向连接,可靠传输,面向字节流

面向连接:通信之前先建立连接,确保双方在线。

可靠传输:在网络正常的情况下,数据不会丢失

面向字节流服务:传输灵活,但是存在tcp粘包问题,没有明显的数据约定

使用场景多为:传输文件,保证数据安全,对数据安全的要求较高

**UDP:**用户数据协议,无连接,不可靠,面向数据报

面向数据报:每条数据有长度标识,数据有明显的间隔,带有报头的整条发/收。传输不灵活。注意!!!!不存在粘包问题

使用场景多为:多数据实时要求非常高的,比如看视频。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
部分内容如下所示: 1域名解析的两种主要方式为(反复解析和递归解析)。 2对于脉冲编码调制来说,如果要对频率为600Hz的语音信号进行采样,若传送PCM信号的信道带宽是3KHz,那么采样频率应该取(6KHz ),就足够可以重构原语音信号的所有信息。 3具有24个10M端口的交换机的总带宽可以达到( .240 M )。 4能完成VLAN之间数据传递的设备是 (路由器)。 5把网络202.112.78.0划分为多个子网(子网掩码是255.255.255.192),则各子网中可用的主机地址总数是(124 )。 6.255.255.255.255地址称为(有限广播地址)。 7关于DNS下列叙述错误的是(域名反映出计算机所在的物理地点)。 8计算机网络中可以共享的资源包括(硬件、软件、数据)。 9下列不属于电子邮件协议的是 ( SNMP )。 10有关虚电路和数据报的特性,正确的是(虚电路在建立连接之后,分组中只需要携带连接标识) 11对于已经划分了VLAN后的交换式以太网,下列错误的(位于一个VLAN的各端口属于一个冲突域) 12以太网交换机中的端口/MAC地址映射表(是交换机在数据转发过程中通过学习动态建立的) 13对IP数据报分片的重组通常发生在(目的主机) 14网络的基本分类有两种:一种是根据网络所使用的传输技术,另一种是(覆盖范围与规模 ) 15.ICMP测试的目的是什么?(确定消息是否能够到达目的地,如果不能,则确定可能的原因) 16对IP数据报分片通常发生在(源主机 )上。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值