网络基础概念总结

网络基础1;

网络划分:局域网-》城域网-》广域网
  1. ip地址:在网络中唯一标识一台主机---uint32位的整数(ipv4)         
         在网络通信中的每一条数据中都应该包含有目的IP地址+源ip地址
         IP地址无符号32位的整数决定了ip地址的个数:不到43亿--不够用 
         DHCP--动态地址分配( 谁上网给谁分配ip地址)
         NAT---网络地址转换技术:将数据中源ip地址,转化位中间转发设备的ip地址-数据按照什么路径出去就应该安照什么路径回来
       

    ipv6:uint8_t iP[16]----并不向前兼容ipv4--导致ipv6的推广使用特别慢。

 2. 端口号:在一台主机上标识一个进程--当计算机收到一个数据之后能够通过数据中的目的端口信息来决定
                这个数据应该交给那个进程处理
         每条网络中的数据都应该包含有:源端口+目的端口
         uint16_t 端口号:范围0~65535;
         特性:一个端口号只能被一个进程占用;一个进程可以使用多个端口号
   

 3.协议:通信双方数据格式的约定
    协议分层:就是在通信环境中协议的封装,使通信环境层次更加清晰,更容易实现标准化;更加容易使用;实现网络互联;
   
    OSI七层参考模型:应用层-》表示层-》会话层-》传输层-》网络层-》链路层-》物理层
    TCP/IP五层模型:应用层-》传输层-》网络层-》链路层-》物理层
         应用层:负责应用程序之间的数据沟通;HTTP/FTP/DNS/DHCP/SMTP
         传输层:负责端与端之间的数据传输;tcp/udp协议
         网络层:负责地址管理与路由选择;ip协议,设备;路由器
         链路层:负责相邻设备之间数据传输;以太网(ether)协议;max(网卡的硬件地址,无符号,48位,16进制)
         物理层:负责光电信号的传输;以太网协议;典型设备;集线器
   
    网络通信数据传输的处理流程
                                                                                               《用户数据》      
                                                                         《应用协议》-《用户数据》      
                                                   《传输协议》-《应用协议》- 《用户数据》                            数据段
                          《网络层协议》-《传输协议》-《应用协议》- 《用户数据》                            数据报
        《以太头》-《网络层协议》-《传输协议》-《应用协议》- 《用户数据》-《以太尾》          数据帧

    数据发送方:数据封装
    数据接受方:数据分用
   

 3.网络字节序:
    字节序:cpu在内存中对数据的存取顺序----针对存储大小大于大于一个字节的数据类型
    主机字节序:一个主机的大小端字节序取决于cpu架构---X86,免费授权的架构;MIPS架构(大端字节序)
    在网络通信中(两台不同主机之间的通信)--通信双方并不知道对方的主机字节序
    小端:低地址存低位
    大端:低地址存高位
    主机字节序大小端的识别:union{int a=1;ucharb;}b==1-- 小端    b=0---大端
                    int a=1; uchar*b=(uchar*)&a      b[0]=1小端
    在通信过程中,通信双方有可能因为主机字节序不同儿导致数据二义性(发送的数据,和对方获取得到的数据不同)
    解决方法:通信时,双方不管自己主机字节序是什么,网络通信中的数据全部采用大端字节序格式,在网络通信中使用大端字节序
          作为网络字节序标准进行通信
 

 4.网络通信是两端通信;其中一端叫客户端;另一端就叫服务端
    通信双方中主动发起请求的这一方是客户端---必须知道服务端在哪里  
    通信双方中被动接受请求的这一方是服务端---必须告诉客户端自己在哪里
    
    传输层有两个协议:TCP/UDP---需要用户告诉操作系统,到底传输层应该用哪一个
        udp(用户数据报协议):无连接,不可靠,面向数据报         传输速度快,性能高,但是不保证可靠传输
           应用于实时性要求极高,安全性不是很高---视频传输
        tcp (传输控制协议):面向连接。可靠传输,面向字节流,   传输速度较慢,性能较低,但是保证可靠传输
           安全性要求极高----文件传输
    
 5.套接字编程:socket编程
    基于UDP协议的socket客户端与服务端通信编程

     -1. int socket(int domain, int type, int protocol);// 创建套接字
                   domain:地址域 AF_INET---IPV4地址域
                   type:套接字类型
                              SOCK_STREAM       流式套接字
                              SOCK_DGRAM        数据报套接字
                   protocol:传输层协议类型
                              0--默认
                              IPPROTO_TCP
                              IPPROTO_UDP
    -2. int bind(int sockfd,const  sockaddr*addr,socklen_t addrlen);//为套接字绑定地址信息
   
    -3. ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);

    -4.ssize_t sendto(int sockfd,  void *buf, size_t len, int flags,  struct sockaddr *dest_addr, socklen_t len);

    -5. int close(int fd);//关闭套接字
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

童无极

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

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

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

打赏作者

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

抵扣说明:

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

余额充值