Linux C语言高级编程之网络编程!

简介

本章主要讲解网络编程的基础知识,主要包括七层网络模型、常用通信协议、IP地址与子网掩码及端口号、字节序。

七层网络模型

讲到网络首先说一下最常见的网络模型,七层网络模型。为了保证数据安全有效的传递,ISO将数据的传递过程从逻辑上划分为七层,这七层如下:

1)应用层:主要用于将数据交给应用程序进行处理,如:QQ;

2)表示层:主要用于按照统一的格式对数据进行封装和打包;

3)会话层:主要用于控制对话的开始以及结束等;

4)传输层:主要用于进行错误检查以及重新排序等传输准备工作;

5)网络层:主要用于选择具体的网络协议进行数据的传递;

6)数据链路层:主要用于将数据包转换为高低电平信号;

7)物理层:主要指底层的硬件设备以及驱动程序等;

常用网络协议

通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。协议定义了数据单元使用的格式,信息单元应该包含的信息与含义,连接方式,信息发送和接收的时序,从而确保网络中数据顺利地传送到确定的地方。这里介绍一下如下几个常用网络协议:

TCP协议:传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议,类似打电话;

UDP协议:用户数据报协议,是一种非面向连接协议,类似发短信;

IP协议:互联网协议,是上述两种协议的底层协议;

小知识:(TCP三次握手)

1)客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态;

2)服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态;

3)客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态;

三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

IP地址与子网掩码及端口号

IP地址:本质就是互联网中的唯一地址标识,由32位二进制组成的整数(ipv4),也有128位二进制组成的整数(ipv6),目前主流的IP地址采用ipv4。

日常生活中描述IP地址的主要方式为:点分十进制表示法,也就是将每个字节的二进制位转换为十进制整数,不同的十进制整数之间采用小数点分隔。

子网掩码:主要用于划分IP地址中的网络地址和主机地址,也可以判断两个IP地址是否在同一个局域网中,具体的划分方法如下:

IP地址 & 子网掩码 => 网络地址 + 主机地址

网络编程中需要提供: IP地址 + 端口号,他们的意义分别如下:

IP地址:知道IP地址可以定位到具体的某一台主机;

端口号:知道端口号可以定位到主机上的某一个具体的进程;

端口号本质就是unsigned short类型,范围是:0 ~ 65535,但是其中0 ~ 1024之间的端口号被系统占用,因此以后编程时建议从1025开始使用。

字节序

在嵌入式开发中,大端(Big-endian)系统和小端系统(Little-endian)是一个很重要的概念。

小端系统:将低位字节的数据存放在低位内存地址的系统;

大端系统:将低位字节的数据存放在高位内存地址的系统;

小端系统中按照地址从小到大依次为:0x78 0x56 0x34 0x12

大端系统中按照地址从小到大依次为:0x12 0x34 0x56 0x78

一般来说,在网络编程中需要将所有发送到网络中的多字节整数先转换为网络字节序再发送,将所有从网络中接收过来的多字节整数先转换为主机字节序再解析,而网络字节序本质就是大端系统的字节序。

总结:以上概念都是网络编程中最常见最基础的知识点,这些都需要大家掌握。另预告一下,下一章将讲解非常重要的SOCKET网络编程,希望大家多多关注。

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LanceToBigData

TCP/IP(三)数据链路层~1

前言   其实前面一堆讲的物理层的概念,会感觉特别的难理解,因为这是一个非常强大的计算机网络体系的底层知识,没有关系!我们大致了解一下就行了。 一、数据链路层概...

27470
来自专栏潇涧技术专栏

Art of Android Development Reading Notes 11

《Android开发艺术探索》读书笔记 (11) 第11章 Android的线程和线程池

5720
来自专栏landv

烽火2640路由器命令行手册-03-广域网配置命令

当帧中继端口与网络相连一般应配为DTE,若路由器为背靠背相连,则一台配成DTE,另一台配成DCE。如果需要双向LMI过程,应配置为NNI。 帧中继标准描述了一个...

11910
来自专栏友弟技术工作室

iptsbles系列一

iptables系列之基础原理 ? linux:网络防火墙 netfilter:frame 框架 网络过滤器 iptables:数据报文过滤,NA...

33350
来自专栏desperate633

设计模式之备忘录模式(Memento模式)引入备忘录模式备忘录模式的实例备忘录模式分析

我们在使用文本编辑器的时候,一般如果不小心误操作了,按ctrl+z就可以恢复之前的状态,撤销(undo)操作。 撤销的操作,实际上有两步,一是要保存之前的状态...

9620
来自专栏安富莱嵌入式技术分享

【RL-TCPnet网络教程】第12章 TCP传输控制协议基础知识

本章节为大家讲解TCP(Transmission Control Protocol,传输控制协议),通过本章节的学习,需要大家对TCP有个基本的认识,方便后面章...

13830
来自专栏Danny的专栏

必备的网络常用测试命令(ping命令)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

36720
来自专栏linux驱动个人学习

Intel P4 CPU

21530
来自专栏林冠宏的技术文章

基于 xorm 的服务端框架 XGoServer

作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:htt...

27950
来自专栏SDNLAB

源码解读ODL与OpenFlow交换机建立过程

编者按:OpenDaylight两大技术特色:1.采用了OSGi框架;2.引入了SAL,而今天我们主要介绍服务抽象层(SAL)适配的南向协议之一OF协议模块。 ...

38840

扫码关注云+社区

领取腾讯云代金券