网络编程基础(一)

目录

前言

一、网络体系架构

1.1 OSI 

1.2 TCP/IP协议簇体系架构

二、TCP和UDP的不同

1.TCP

2.UDP

三、网络编程基础相关概念

1.字节序

1.在计算机中有关多字节整数的存储方式,根据主机CPU处理数据的方式不同,我们将主机分为大端存储和小端存储

2.验证主机存储方式

3.根据不同的主机数据交换需要考虑端序的转换

 4.何时使用字节序转换相关函数

2.ip地址

1.IP地址是计算机在网络中的唯一标识,由两部分组成

2.作用:

3.ip地址的分类

4.ip地址的划分,分别是A,B,C,D,E类网络

5.一个局域网下的特殊ip地址

6.点分十进制

四.子网掩码

五、端口号 

六、域名分析



前言

为什么要学习网络编程?

1.进程间通信方式
       1. 内核提供三种:

                无名管道
                有名管道

                信号

        2.system V提供三种:

                消息队列

                共享内存
                信号灯集

上述通信方式中,只能实现同意主机之间多个进程之间的通信,并不能实现跨主机的通信方式

所以,引入了socket套接字通信

一、网络体系架构

OSI开放系统互联模型

        

每一层都有自己独立的功能,单每一层都不可获取

分层的好处:

1.各层之间独立,每一层不需要知道下一层如何实现,仅仅只需要知道该层通过层间接口所提供的服务
2.稳定,灵活性好,当任何一层发生变化时,只需要层间接口关系保持不变,这层的上下层不受影响

3.易于实现和维护(知道是什么功能,就到指定层去查找)

4.促进标准化工作:每一层的功能及所提供的服务都有精确的说明

5.结构上不可分割开:各层都可以采用最适合的技术来实现

1.1 OSI 

OSI共有7层:

从上到下的顺序 :应用层 表示层 会话层 传输层 网络层 链路层 物理层 

1.2 TCP/IP协议簇体系架构

从上到下:应用层 传输层 网络层 链路层

应用层:

http:超文本传输协议

ftp:文件传输协议 使用TCP传输

tftp :简单文件传输协议 使用Udp传输

smtp :简单邮件传输

传输层:

TCP 传输控制协议

UDP用户数据报协议

网络层:

ip 网际互连协议

ICMP:互联网控制协议

IGMP:互联网组管理

链路层:

ARP:地址解析协议

RARP:逆向地址解析协议

注意:

        每层使用的协议由下层决定,不能乱用


 

二、TCP和UDP的不同

1.TCP

1.面向连接的,可靠的,面向字节流的传输控制协议

2.传输过程中,数据无误,无丢失,无失序,无重复

3.数据传输效率低,耗费资源多

4.数据收发不同步

使用场景:对传输质量需求高,以及传输大量数据的通

2.UDP

1.面向无连接的,不可靠的,尽最大努力传输的协议

2.数据传输过程中,可能会出现数据丢失,重复,失序现象

3.数据传输效率高,实时性高

4.收发是同步的,不会沾包

5.使用场景:发送小尺寸的,在接收数据给出应答比较困难的情况下

例如:广播。音视频


三、网络编程基础相关概念

1.字节序

1.在计算机中有关多字节整数的存储方式,根据主机CPU处理数据的方式不同,我们将主机分为大端存储和小端存储

大端存储:低地址位存储数据的高位的存储方式

小端存储:低地址位存储数据的低位的存储方式

2.验证主机存储方式

#include<myhead.h>

int main(int argc, const char *argv[])
{
#if 0
    /*****使用指针的方式验证主机大小端*******/
    //定义一个整形变量
    int num = 0x12345678;

    //找到num的起始地址
    char *ptr = (char *)&num;     //定义一个字符指针,指向num的第一个字节的地址
    
    //判断该字节中的数据
    if(*ptr == 0x12)
    {
        printf("big endian\n");
    }else if(*ptr == 0x78)
    {
        printf("little Endian\n");
    }
#endif

    /********使用共用体的方式验证***********/
    //定义一个共用体
    union Data
    {
        int num;
        char value;
    };

    //定义共用体变量
    union Data ud;
    ud.num = 0x12345678;  //给第一个成员赋值
    //判断第二个成员的值
    if(ud.value == 0x12)
    {
        printf("big endian\n");

    }else if(ud.value == 0x78)
    {
        printf("little Endian\n");
    }






    return 0;
}

3.根据不同的主机数据交换需要考虑端序的转换

主机字节序:本地主机存储多字节整数的方式,分为大端存储和小端存储

网络字节序:多字节整数在网络中传输的存储方式称为网络字节序,规定网络字节序为大端存储

 #include <arpa/inet.h>

       uint32_t htonl(uint32_t hostlong);          //将4字节无符号整数的主机字节序转换为网络字节序,参数是主机字节序,返回值是网络字节序

       uint16_t htons(uint16_t hostshort);          //将2字节无符号整数的主机字节序转换为网络字节序,参数是主机字节序,返回值是网络字节序

       uint32_t ntohl(uint32_t netlong);          //将4字节无符号整数的网络字节序转换为主机字节序,参数是网络字节序,返回值是主机字节序

       uint16_t ntohs(uint16_t netshort);        //将2字节无符号整数的网络字节序转换为主机字节序,参数是网络字节序,返回值是主机字节序

 4.何时使用字节序转换相关函数

1.在进行多字节整数网络传输时,需要使用字节序的转换

2.对于单字节整数传输时,无需使用字节序的转换

3.对于字符串的传输时,无需使用字节序的转换


2.ip地址

1.IP地址是计算机在网络中的唯一标识,由两部分组成

网络号:确定计算机所丛的从属的网络

主机号:标识设备在该网络下的一个编号

2.作用:

在网络传输中,给网络传输载体源ip地址和目的ip地址,以便找到对应的主机

3.ip地址的分类

ipv4

ipv6

4.ip地址的划分,分别是A,B,C,D,E类网络

A类地址

1.0.0.0~127.255.255.255

2^7(网络号)

2^24(主机号)

已经保留不在供给

B类地址

128.0.0.0~191.255.255.255

2^14

2^16

名地址网管中心

C类地址

192.0.0.0~223.255.255.255

2^21

2^8

校园网或企业网、家庭网

D类地址

224.0.0.0~239.255.255.255

组播地址

E类地址

240.0.0.0~255.255.255.255

保留

5.一个局域网下的特殊ip地址

1.网络号+0:表示该网络,不分配给任何主机使用

2.网络号+255:广播地址,不分配给任何主机使用

3.网络号+1:默认为网关地址

4.127.0.0.1:本地环回地址,用于主机内部自测使用

5.0.0.0.0:表示当前局域网的任意一个主机号

6.255.255.255.255:一般表示广播 

6.点分十进制

in_addr_t inet_addr(const char *cp);

功能:将ip地址的点分十进制数据转换为网络字节序的整数

参数:ip地址的点分十进制字符串

返回值:网络字节序的ip地址的整数表示

char *inet_ntoa(struct in_addr in);

功能:将ip地址的网络字节序转换为点分十进制的字符串

参数:ip地址的网络字节序整数

返回值:点分十进制字符串

四、子网掩码

1.子网掩码是对主机好的二次划分,可以将主机号分为子网号+主机号

2.linux中可以使用指令ifconfig查看当前网络默认的子网掩码

3.子网掩码:由一组连续的1和连续的0组成,格式类似ip地址

4.子网掩码的使用:IP地址&子网掩码==》子网网段

5.默认子网掩码:网络号全为255+主机号全为0

示例:

192.168.125.64     -->    255.255.255.0(默认子网掩码)
A类网络子网掩码:255.0.0.0
B类网络子网掩码:255.255.0.0
C类网络子网掩码:255.255.255.0
D类网络、E类网络没有子网掩码

1、对于192.168.125.64这个ip地址使用默认子网掩码
    11000000 10101000 01111101 01000000
  & 11111111 11111111 11111111 00000000
  ——————————————————————————————————————————
    11000000 10101000 01111101  00000000    ----> 192.168.125.0/24 说明该ip地址属于该子网网段
    
2、 对于192.168.125.200这个ip地址使用默认子网掩码
    11000000 10101000 01111101 11001000
  & 11111111 11111111 11111111 00000000
  ——————————————————————————————————————————
    11000000 10101000 01111101  00000000    ----> 192.168.125.0/24 说明该ip地址属于该子网网段         
    
3、对于192.168.125.64这个ip地址使用 255.255.255.128的子网掩码
    11000000 10101000 01111101 01000000
  & 11111111 11111111 11111111 10000000
  ——————————————————————————————————————————
    11000000 10101000 01111101  00000000    ----> 192.168.125.0/25 说明该ip地址属于该子网网段     
 4、 对于192.168.125.200这个ip地址使用255.255.255.128的子网掩码
    11000000 10101000 01111101 11001000
  & 11111111 11111111 11111111 10000000
  ——————————————————————————————————————————
    11000000 10101000 01111101  10000000    ----> 192.168.125.128/25 说明该ip地址属于该子网网段      
    
5、 对于192.168.125.60这个ip地址使用 255.255.255.192的子网掩码
    11000000 10101000 01111101 00111100
  & 11111111 11111111 11111111 11000000
  ——————————————————————————————————————————
    11000000 10101000 01111101  00000000    ----> 192.168.125.0/26 说明该ip地址属于该子网网段      
    
6、 对于192.168.125.100这个ip地址使用 255.255.255.192的子网掩码
    11000000 10101000 01111101 01100100
  & 11111111 11111111 11111111 11000000
  ——————————————————————————————————————————
    11000000 10101000 01111101  01000000    ----> 192.168.125.64/26 说明该ip地址属于该子网网段        
    
6、 对于192.168.125.130这个ip地址使用 255.255.255.192的子网掩码
    11000000 10101000 01111101 10000010
  & 11111111 11111111 11111111 11000000
  ——————————————————————————————————————————
    11000000 10101000 01111101  10000000    ----> 192.168.125.128/26 说明该ip地址属于该子网网段       
    
6、 对于192.168.125.200这个ip地址使用 255.255.255.192的子网掩码
    11000000 10101000 01111101 11001000
  & 11111111 11111111 11111111 11000000
  ——————————————————————————————————————————
    11000000 10101000 01111101  11000000    ----> 192.168.125.192/26 说明该ip地址属于该子网网段                                                                                                                 

总结:子网网段的个数=2^(子网中1的个数)

子网网段下的主机个数=2^(子网中0的个数)

五、端口号 

1.为了区分同一主机的多个进程,使用端口号来进行处理

2.端口号是一个2字节的无符号整数存储

3.网络通信的两个决定性因素:ip+端口号

4.端口号的分类:

        0~1023端口我们编程时候不要使用,是那些”VIP“应用程序占了

        TCP 21端口:FTP文件传输服务

        TCP 23端口:TELNET终端仿真服务

        TCP 25端口:SMTP简单邮件传输服务

        TCP 110端口:POP3邮局协议版本3

        TCP 80端口:HTTP超文本传输服务

        TCP 443端口:HTTPS加密超文本传输服务

        UDP 53端口:DNS域名解析服务

        UDP 69端口:TFTP文件传输服务

        特殊的端口函数,存储在linux中的 /etc/services文件中

六、域名分析

一个域名可以绑定多个ip

域名结构:      

        例如域名 http: //www.baidu.com.cn 从右向左看

        cn为高级域名,也叫一级域名,它通常分配给主干节点,取值为国家名,cn代表中国

        com为网络名,属于二级域名,它通常表示组织或部门

        中国互联网二级域名共40个,edu表示教育部门,com表示商业部门,gov表示政府,军队mil等等

        baidu为机构名,在此为三级域名,表示百度

        www:万维网world wide web,也叫环球信息网,是一种特殊的信息结构框架。

        http:使用的是超文本传输协议

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/651979.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(免费领源码)java#SSM#mysql第三方物流系统37852-计算机毕业设计项目选题推荐

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

Kruskal算法求最小生成树(加边法)

一、算法逻辑 想要轻松形象理解Kruskal算法的算法逻辑&#xff0c;视频肯定比图文好。 小编看过很多求相关的教学视频&#xff0c;这里选出一个我认为最好理解的这一款安利给大家。 因为他不仅讲解细致&#xff0c;而且还配合了动画演示&#xff0c;可以说把一个抽象的东西讲…

STM32高级控制定时器(STM32F103):输入捕获模式

目录 概述 1 输入捕获模式 1.1 原理介绍 1.2 实现步骤 1.3 发生输入捕获流程 2 使用STM32Cube配置工程 2.1 软件环境 2.2 配置参数 2.3 生成项目文件 3 功能实现 3.1 PWM调制占空比函数 3.2 应用函数库 4 测试 4.1 功能框图 4.2 运行结果 源代码下载地址&#xf…

微软联手清华,AI注释让文本到图像生成更符合人类偏好

获取本文论文原文PDF&#xff0c;请在公众号【AI论文解读】留言&#xff1a;论文解读 摘要 本研究展示了利用人类偏好数据集来精细调整文本到图像生成模型的潜力&#xff0c;增强了生成图像与文本提示之间的一致性。尽管取得了进展&#xff0c;现有的人类偏好数据集要么构建成…

【网络协议】划重点啦!TCP与UDP的重点面试题!!!

1. 为什么建立TCP连接是三次握手&#xff0c;而关闭连接却是四次挥手呢&#xff1f; 这是因为服务端的 LISTEN 状态下的 SOCKET 当收到 SYN 报文的建连请求后&#xff0c;它可以把 ACK和 SYN&#xff08;ACK 起应答作用&#xff0c; 而 SYN 起同步作用&#xff09; 放在一个报文…

飞控如何连接地面站

飞控连接地面站有两种方法&#xff0c;一种是USB线&#xff0c;一种是数传。 一.USB线连接 usb连接线使用安卓手机线&#xff08;一般人都有吧&#xff0c;没有很容易买和借到&#xff09; 电脑打开地面站软件。 端口选择C OM口&#xff0c;不要选择auto&#xff0c;如果你…

详细分析 tar: xx:无法 open: 没有那个文件或目录 的解决方法

目录 1. 问题所示2. 原理分析3. 解决方法 1. 问题所示 对于此问题处理起来比较简易&#xff0c;对此放置在运维的专栏模块 在执行解压的时候出现如下问题&#xff1a; (pgm37) l228l228:~/huoyanhao/pytorch-glow-master/pytorch-glow-master$ tar -xvf celeb-tfr.tar tar: …

计算机网络路由协议之内部网关协议RIP例题与详解

互联网的路由选择协议 路由器转发表的路由协议如何得出呢&#xff1f; 使用路由算法进行&#xff0c;路由算法可以分为两类&#xff1a; 静态路由选择策略和动态路由选择策略。 静态路由选择策略&#xff1a; 非自适应路由选择&#xff0c;人工配置每一条路由。 动态路由选…

遗留和现代数据库中的向量搜索

遗留和现代数据库中的向量搜索 image1 向量数据库是一种将数据&#xff08;包括文本、图像、音频和视频&#xff09;存储为向量的数据库&#xff0c;向量是高维空间中对象或概念的数学表示。 注意&#xff1a;根据数据的复杂程度和细节&#xff0c;每个向量的维数可能差别很大&…

DOS学习-目录与文件应用操作经典案例-attrib

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 一.前言 DOS系统中的attrib命令是一个用于显示或更改文件&#…

【CCF CAT- 全国算法精英大赛(第二场)】训练一

目录 前言训练一A题 Mysterious Rune StringB题 TouristC题 The diameter of a rectangleD题 Card 前言 我飘了&#xff0c;全国算法精英大赛本来就是三人赛&#xff0c;但是我认为自己能一个人当三个人用&#xff0c;结果被训练赛拷打。 另外赛氪这个平台有一个严重的问题&…

Diffusion相关原理

Diffusion相关原理 1、数学&#xff1a;重参数化 &#xff08;用于高斯拟合求导&#xff09;变分推断原理 &#xff08;用于损失&#xff09; 2、生成模型系列1、AE自动编码器&#xff08;AutoEncoder&#xff09;2.VAE的模型架构模型原理数学原理AE和VAE对比 3、DDMP图像高斯加…

2024 年你应该选择哪个开源大模型?

自2017年发表的论文《Attention Is All You Need》发明了Transformer架构以来&#xff0c;自然语言处理&#xff08;NLP&#xff09;取得了巨大的进展。随着2022年11月ChatGPT的发布&#xff0c;大型语言模型&#xff08;LLM&#xff09;引起了广泛关注。 你是否想在自己的用例…

揭秘网络编程:同步与异步IO模型的实战演练

摘要 ​ 在网络编程领域&#xff0c;同步(Synchronous)、异步(Asynchronous)、阻塞(Blocking)与非阻塞(Non-blocking)IO模型是核心概念。尽管这些概念在多篇文章中被广泛讨论&#xff0c;它们的抽象性使得彻底理解并非易事。本文旨在通过具体的实验案例&#xff0c;将这些抽象…

HTML+CSS+JavaScript网页制作案例教程第2版-黑马程序员-第9章动手实践

文章目录 效果代码网盘 效果 代码 index.html <!doctype html> <html> <head> <meta charset"utf-8"> <title>通栏效果</title> <link rel"stylesheet" type"text/css" href"index.css"> …

【源码】2024完美运营版商城/拼团/团购/秒杀/积分/砍价/实物商品/虚拟商品等全功能商城

后台可以自由拖曳修改前端UI页面 还支持虚拟商品自动发货等功能 前端UNIAPP 后端PHP 一键部署版本 获取方式&#xff1a; 微&#xff1a;uucodes

基于Java+SpringBoot+Mybaties-plus+Vue+elememt + uniapp 驾校预约平台 的设计与实现

一.项目介绍 系统角色&#xff1a;管理员、教练、学员 小程序(仅限于学员注册、登录)&#xff1a; 查看管理员发布的公告信息 查看管理员发布的驾校信息 查看所有教练信息、预约(需教练审核)、评论、收藏喜欢的教练 查看管理员发布的考试信息、预约考试(需管理…

设计模式:原型模式(Prototype)

设计模式&#xff1a;原型模式&#xff08;Prototype&#xff09; 设计模式&#xff1a;原型模式&#xff08;Prototype&#xff09;模式动机模式定义模式结构时序图模式实现在单线程环境下的测试在多线程环境下的测试模式分析优缺点适用场景应用场景模式扩展应用实例实例 1&am…

【软件设计师】——6.程序设计语言与语言处理程序

目录 6.1基本概念 6.2编译与解释 6.3文法 6.4有限自动机 6.5正规式 6.6 表达式 6.7 传值与引用 6.8 数据类型与程序控制结构 6.9 程序语言特点 6.10 Java程序设计 6.11 C 6.12 python 6.1基本概念 语句&#xff1a;高级程序设计语言中描述程序的运算步骤、控制结构、…

hubilder Android模拟器华为手机连接不上

APP真机测试注意点&#xff1a; 1. 同一个局域网下 2. 手机连接USB模式&#xff08;华为选择USB配置&#xff1a;音频来源&#xff09; &#xff0c;开发者模式 3. 实在不行重启HBuilderX再运行真机 可是卡在了“正在安装手机端HBuilder调试基座...” 就没反应了&#xff1f;&…