网络基础

[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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Demon-HY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值