网络编程 day1

网络编程 
    open system interconnect
1、OSI 模型所有的网络都可以用其描述)===》开放系统互联模型  ==》分为7层
    理想模型  ==》尚未实现
        tftp 
        b  /etc/passwd 
        a /etc/123
        应用层  (决定收发进程)
        表示层   加密解密  gzip
        会话层   网络断开,连接状态,keep-close keep-alive

        传输层 (数据将以什么方式发送)tcp(可靠传输,保证准确到达)//(下载文件,讲究内容的准确性)    udp(数据有可能丢包,存在数据丢失)//(网络直播,实时的视频音频,讲究效率)  协议  文件    视频,音频
        网路层   ip(ip协议)   NAT

        链路层   交换机 (将多台设备连接起来,进行数据交互,形成了小的局域网,无线方式不需要交换机)    数据的格式化(数据格式化,将网络设备连接起来)  帧  校验(验证判断数据在发送过程中是否发生了改变)
        物理层 (纯硬件)100Mb/8  Gbits   100MB 同轴电缆 10Gb(单位)    2.4G 5G

  TCP/IP模型  ==》网际互联模型   ==》分为4层:
      实用模型  ===》工业标准
      tcp/ip协议栈
        应用层   ====》应用程序
        传输层   ====》端口号tcp udp
        网络层   ====》IP 地址
        接口层 (物理层与链路层(软+硬))  ====》网卡 驱动  1GB

------------------------------------------------------------------------------------------------------------------------
pcap ,,,
2、TCP/IP协议族:
    www.taobao.com (域名,网址)---> 192.168.0.19
    www.voa.com vpn  
    dns 域名解析 (专门的服务器,将域名解析为ip地址)应用层
    DHCP (动态主机配置协议) 
    应用层:   HTTP(超文本传输协议,一般用于网页)       TFTP(本地传输,短距离几米以内),  FTP(远距离传输,断点传输)=(都是传输文件)      SNMP(检测,路由器后台软件可以见到)         DNS(域名解析) ...
    传输层: TCP(可靠传输,自带应答有来有回必须,有时间限制一定时间没回答会再次传输,比 较吃资源)           UDP(数据用户报,数据可能对包,但是实时性高,数据发送完链路释放节省网络开销)   56k猫
    网络层 IP(找主机)   ICMP(ping命令)     RIP OSPF (针对路由器)    IGMP ...
    物理层: ARP(接口层)     RARP  ...   ip--->mac  
    arp,,,,
    192.160.0.112
    
    

========================================================

TCP编程基础知识:

    
1、网络基础 ===》A B C D E 类(前三类互联网上,后两位比较特殊)

010 3333344444
IP地址 == 网络位 + 主机位

IP地址的分类: 点分十进制   ipv4  712934
    A类:    超大规模性网络
                    8    8    8    8
        1.0.0.0 - 126.255.255.255  126.1.1.1 
                                    126.1.1.2
        255.0.0.0    
        私有:
        10.0.0.0 - 10.255.255.255
        127.0.0.1
    B类:    大中规模型网络
        128.0.0.0 - 191.255.255.255
        128.2.1.2  128.2.7.2
        255.255.0.0
        私有:
        172.16.0.0 - 172.31.255.255

    C类:    中小规模型网络
        192.0.0.0 - 223.255.255.255
        255.255.255.0                        
        私有:
        192.168.0.0 - 192.168.255.255 
        静态路由
        192.168.0.0 (一般表示整个网络)
        192.168.0.1  网关
        192.168.0.255 

    D类:    组播和广播(广播只能局域网)
        224.0.0.0 - 239.255.255.255
        192.168.0.255 ==  255.255.255.255(本局域网所有人)
        235.1.2.3
        192.168.1.0 
        192.168.0.1   网关
        192.168.1.255 广播 

    E类:    实验
        240.0.0.0 - 255.255.255.255
        
   C 类网络:
       ip地址的前三组是网络地址,第四组是主机地址。
       二进制的最高位必须是: 110xxxxx开头
       十进制表示范围: 192.0.0.0 -223.255.255.255
        默认网络掩码:   255.255.255.0
        网络个数: 2^24 个 约 209 万个
        主机个数: 2^8  个 254 个+2 ===》1 是网关 1是广播
        私有地址: 192.168.x.x 局域网地址。
  
  1)sudo vim  /etc/network/interfaces (配置网络文件,linux)


 2) sudo /etc/init.d/networking restart  
 3)sudo reboot(如果对网络配置1)进行修改了,就要用其重启)
    192.168.0.0
    192.168.0.1  route 
    192.168.0.255 boardcast
    801.n.g 
    单机上网的配置:
    1、有网络接口并插入网线。
    2、有ip地址
    3、配置网络设置
            ip: ifconfig ethX X.X.X.X/24 up  ifconfig ens33 192.168.0.13/24(24子网掩码mac) up  255.255.255.0


            //网关: route add default gw x.x.x.x 
            //DNS:  vi /etc/resolv.conf  ==>nameserver 8.8.8.8
            测试:ping www.baidu.com (与旁边的主机是否可以进行通信) 
            
            netstat  -anp(查看网络状态,后面+参数)

2、网络接口
    1、socket  套接字(文件描述符) ==》BSD socket ==》用于网络通信的一组接口函数。

socket api (函数接口) application interface
    2、ip+port 地址+端口(ip地址+端口号)===》地址用来识别主机
                             端口用来识别应用程序,端口号(1-65535)与进程号相对应,ip地址找主机

      

port分为TCP port / UDP port  范围都是: 1-65535
          约定1000 以内的端口为系统使用。
            http 80   www.baidu.com
                3306
                telnet 21 
                ssh 22
3、网络字节序 ===》大端存储
        12 00   小端   0x12345678
        00 12
        192.168.0.12
        12.0.168.192())
        
        00 12
    数字转换函数:
    #include <arpa/inet.h>
    1236234687
    主机转网络:uint32_t htonl(uint32_t hostlong);
    ipv4 192.168.0.1 1~65535
                uint16_t htons(uint16_t hostshort);
    网络转主机:host to net 
                net to host 
                uint32_t ntohl(uint32_t netlong);
                uint16_t ntohs(uint16_t netshort);
                
    字符串转换函数:
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>

    主机转网络:in_addr_t inet_addr(const char *cp);
    inet_addr("192.168.1.20");
    cli.sin_addr
    网络转主机:char *inet_ntoa(struct in_addr in);

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值