网络基础

简介: [2] 基本概念    1. 封包       对数据的一种打包,俗称数据包,类似于“包裹”           2. 协议       双方规定好的数据包格式,类似于包裹上的收件人信息           3.
[2] 基本概念
    1. 封包
       对数据的一种打包,俗称数据包,类似于“包裹”
       
    2. 协议
       双方规定好的数据包格式,类似于包裹上的收件人信息
       
    3. 互联网(Internet)
       连接网络的网络,称为internet
       
       (1) 早期
       
                                     data
           -------------------------------------------------------
                TCP(Transmit Control Protocol)         UDP  + data
           -------------------------------------------------------
                                     IP + TCP(UDP) + data
           -------------------------------------------------------
           ARPAnet              封包无线网               封包卫星网
           
           TCP(可靠)
           面向连接(电话)
           纠错(保证数据不丢失、无错误、不重复到达、顺序不乱)
           
           UDP(不可靠)
           不是面向连接
           不纠错
           
           IP(Internet Protocol)
           
       (2) 现在(TCP/IP)
           TCP/IP主协议没变,但是增加了很多协议,具体协议见PPT(了解),
           
       (3) 理想
           
           data                 应用层
           -------------------------------
           应用协议             表示层
           -------------------------------
           建立连接             会话层
           -------------------------------
           TCP(UDP)协议         传输层
           -------------------------------
           IP协议               网络层
           -------------------------------
           硬件适应的协议       数据链路层
           -------------------------------
           硬件                 物理层
4. RFC(Request For Comments)征求意见文档
[3] 家庭网络(《家庭网络.bmp》)
    1. A电脑如何跟局域网内部设备通讯?
       telnet本地linux计算机
                                                                 
    2. A电脑如何跟局域网外部的设备通讯?
       百度
       
[4] 资料和工具
    1. 资料
       TCP/IP详解卷一
    
    2. 工具
       WireShark
       
[5] 设置网络参数
    1. IP地址
       (1) 作用
           唯一标识一台主机
           
       (2) 组成
           网络地址 + 主机号
           网络地址     用于区分两台电脑是否在同一个网络内,类似电话号码的区号
           主机号       用于区分同一个网络中的两台机器
           
       (4) 长度
           IPv4        4字节(32位)
           IPv6        16字节(128位)
           
       (5) 字节序(大端--网络字节序)
       
       (6) 表示
           将4字节的数分别转换成10进程的数,用“.”分隔来表示IP地址,称点分十进制
           例: 192      .168.      0        .1
               11000000  10101000  00000000  00000001
               
       (7) 分类
         网络地址主机号   高位规定   地址范围             私有地址(局域网地址)      保留  
           A       1             3         0         0.0.0.0 - 127.255.255.255   10.x.x.x                  127.x.x.x(环回)
           B       2             2         10        128.0.0.0 - 191.255.255.255 172.16.x.x-172.31.x.x     169.254.x.x(没有DHCP服务器)
           C       3             1         110       192.0.0.0 - 223.255.255.255 192.168.x.x               
           D       组播                    1110
           E       保留
           
           网络地址         主机地址为0
           广播地址         主机地址为全1的,如: 192.168.0.255
 
    2. 子网掩码(mask)
       IP地址 & mask = 网络地址
       例:
          十进制                         二进制
          192.168.0.1        11000000  10101000  00000000  00000001
        & 255.255.255.0      11111111  11111111  11111111  00000000
        ------------------------------------------------------------
          192.168.0.x        11000000  10101000  00000000  00000000
        
    3. 网关(Gate)
       A电脑<---->网关<----->internet
    
    4. DNS
       域名( www.baidu.com)--->ip地址
       
[6] telnet--->虚拟机
    1. 将虚拟机的IP地址转换为他的MAC(网卡)地址     ARP
    2. A电脑通过虚拟机的mac地址发送数据包虚拟机    TCP
    3. 虚拟机通过A电脑的mac地址发送数据包给A电脑   TCP
    4. A电脑通过虚拟机的mac地址发送数据包虚拟机    TCP
    5. A电脑通过虚拟机的mac地址发送数据包给虚拟机  telnet

    IE---->baidu
    1.  www.baidu.com--->ip地址                         DNS协议
    2. 通过网关的IP地址转换为他的mac地址                ARP
    3. 通过网关的MAC地址发送数据(发给baidu)包给网关     TCP
    4. baidu-->网关--->A电脑                            TCP
    5. A电脑-->网关--->baidu                            TCP
    6. A电脑-->网关--->baidu                            http

[7] 端口号
    (1) 作用
        每一个应用程序进程有一个端口号,通讯时区分数据包属于哪个应用程序进程
       
    (2) 分类
        1 - 1023           知名端口号(已经分配给标准应用服务软件)
        1024 - 5000        注册端口号(非标准应用服务软件的软件可以申请的端口号范围)
        5000 - 65535       动态分配的端口号(系统动态分配给应用程序使用的)
       
    (3) 长度
        2字节(16bit)
       
[8] 数据包格式
    ARP数据包结构
    -----------------------------------
    | dest mac  | src mac  | arp data  |
    ------------------------------------
   
    TCP
    -------------------------------------------------------------------
    | dest mac  | src mac  | dest ip | src ip |  dest port | src port |
    -------------------------------------------------------------------
   
    http 或 telnet
    ---------------------------------------------------------------------------
    | dest mac  | src mac  | dest ip | src ip |  dest port | src port | data
    ---------------------------------------------------------------------------
   
    必须要设置的参数?
    1. dest ip
    2. dest port

[10] socket 
     1. 历史
        1982                         本地通信
        1986                         网络通信
       
     2. 原理
        一种特殊的文件
       
     3. 目的
        将网络操作模拟成文件操作
       
     4. 类型及用途
        SOCK_STREAM                  流式套接字          TCP
        SOCK_DGRAM                   报文套接字          UDP
        SOCK_RAW                     原始套接字          IP、ICMP
       
[11] ip转换
     1. 头文件
        #include <sys/socket.h>
        #include <netinet/in.h>
        #include <arpa/inet.h>

     2. 数据结构
        typedef unsigned int in_addr_t;

        struct in_addr
        {
                unsigned int s_addr;
        };

     3. 函数
        (1) ip字符串----> 整数(大端)

            /*
             * @param[in]         cp                     ip字符串
             * @param[out]      inp                     二进制形式(网络字节序 大端)的ip地址
             * @return               @li !0               ip字符串是有效的ip地址
             */
            int inet_aton(const char *cp, struct in_addr *inp);

              /*
               * @param[in]         cp  ip字符串
               * @return               二进制形式的IP地址
               * @li                      INADDR_NONE(-1)  ip字符串无效
               * @notes                 INADDR_NONE(-1)也是有效的IP地址(255.255.255.255)
               */
            in_addr_t inet_addr(const char *cp);

        (2) 整数 ------->ip字符串
            /*
             * @param[in] in 二进制形式的IP地址
             * @return ip字符串
             * @notes ip字符串放在静态数据段,并且放在固定位置,所以第二次调用会覆盖第一次调用的结果
             */
            char *inet_ntoa(struct in_addr in);

[12] 整数字节序转换
     1. 头文件
        #include <arpa/inet.h>

     2. 函数
        (1) 主机字节序----->网络字节序
            /*
             * @param[in] hostlong(hostshort)   主机字节序的整数
             * @return          网络字节序的整数
             */
            unsigned short long htonl(unsigned short long hostlong);
            unsigned short int htons(unsigned short int hostshort);

        (2) 网络字节序----->主机字节序
            /*
             * @param[in] nettlong(netshort)   网络字节序的整数
             * @return          主机字节序的整数
             */
            unsinged long ntohl(unsigned long netlong);
            unsigned short ntohs(unsigned short netshort);
相关文章
|
域名解析 缓存 网络协议
计算机网络——网络基础_网络命令的使用(配置主机IP、ipconfig、ping、tracert、arp实战)
任务要求 打开Windows 10的命令(控制台)窗口。 实验步骤 有多种方法打开Windows命令(控制台)窗口。其中一种较为快速的方法是: 在键盘上按下“Win+R"组合键,系统将打开“运行"窗口,如图1-1所示。键入cmd.按回车键或单击“确定”按钮,Windows将打开命令(控制台)窗口,显示俞令提示符,如图1-2所示。
1671 1
计算机网络——网络基础_网络命令的使用(配置主机IP、ipconfig、ping、tracert、arp实战)
|
网络协议 Java 网络性能优化
|
网络协议 算法 网络性能优化
网络入门基础模型, 网络大体框架, TCP/IP协议栈, 各种局域网和广域网刨析 (以图解的方式推开网络大门)
网络入门基础模型, 网络大体框架, TCP/IP协议栈, 各种局域网和广域网刨析 (以图解的方式推开网络大门)
网络入门基础模型, 网络大体框架, TCP/IP协议栈, 各种局域网和广域网刨析 (以图解的方式推开网络大门)
|
传感器 消息中间件 网络协议
ESP32-C3入门教程 网络 篇(三、 MQTT 协议基础介绍及测试)
在前面,我们已经学会了 ESP32-C3 的WiFi 配置以及使用,为我们学习网络协议建立了基础。 这篇文章我们就来学习测试一下ESP32-C3 的 MQTT 驱动。
940 1
ESP32-C3入门教程 网络 篇(三、 MQTT 协议基础介绍及测试)
|
缓存 网络协议 网络架构
网络基础:Ping、Traceroute应用与排错
网络基础:Ping、Traceroute应用与排错
380 0
网络基础:Ping、Traceroute应用与排错
|
设计模式 监控 网络协议
Linux网络原理与编程——第十一节 网络基础及套接字
从system call(系统调用结构)开始往下,都是属于OS和硬件的范畴,我们一般的程序员所进行的开发,通常都是在用户层。(这个我们后面还会具体说到)。
211 0
Linux网络原理与编程——第十一节 网络基础及套接字
|
域名解析 缓存 网络协议
Linux网络基础
Linux网络基础
307 0
|
运维 安全 数据安全/隐私保护
【网络与信息安全基础】OSI 网络体系结构
【网络与信息安全基础】OSI 网络体系结构
250 0
【网络与信息安全基础】OSI 网络体系结构
|
数据采集 API C++
【0基础爬虫】网络基础知识&python基础知识
爬虫是获取网络信息资源的方式之一,我们可以通过爬虫采集到想要的数据,因此爬虫对于我们而言十分重要。本文介绍了爬虫的网络基础知识和python相关包,使得初学者可通过简答的配置学习到网络爬虫相关知识。 本章节讲简单介绍Python相关知识
149 0
|
网络协议 网络架构
网路系统规划与设计(CCNA)复习纲要 第一部分:网络通识基础
网路系统规划与设计(CCNA)复习纲要 第一部分:网络通识基础
160 0
网路系统规划与设计(CCNA)复习纲要 第一部分:网络通识基础

热门文章

最新文章