IP地址:  一台主机在网络中的标识

IPv4:  uint32_t 类型的整数(32位无符号类型的整数) -- IP地址数据类型

              每一个网络中的数据都会带有两条信息:  源端IP地址;  对端IP地址

端口:  网络通信中一台主机上进程的标识符  (uint16_t 类型的整数  范围0~65535)

              每一个网络中的数据不但带有源端IP和对端IP,  还包括两个信息:  源端端口和对端端口

        源端IP + 源端端口 + 对端IP + 对端端口 :  描述了当前这个数据是从网络中的哪个主机上的哪个进程发出来的,  要发往哪个主机上的哪个进程

 

协议:

  网络通信协议 -- 就是网络通信中的数据格式的约定

  因此要实现网络互连 -- 就必须具有统一的网络通信协议标准;

ISO公司提出:

  OSI七层网络互连模型:  以提供的服务不同将网络通信环境划分为七层(过于细致,繁琐,不实用)

     层次划分:  应用层 - 表示层 - 会话层 - 传输层 - 网络层 - 链路层 - 物理层

TCP / IP五层模型:(常用模型)

   应用层:  负责应用程序之间的数据沟通;   FTP  HTTP

   传输层:  负责进程之间的数据传输;   UDP  TCP

   网络层:  负责地址管理和路由选;   IP  路由器

   链路层:  负责相邻设备之间的数据传输;   以太网协议-eth   交换机

   物理层:  负责物理光电信号的传输;   以太网协议   集线器

 

 

主机字节序:  一台主机上cpu对内存中数据按照字节为单位进行存取的顺序

    分类:    大端:  低地址存高位          小端:  低地址存低位

一台主机的字节序是大端还是小端由cpu决定

          一个变量/数组的起始地址就是低地址,  随着下标变大而变大,首地址为低地址

     二进制中:      高位                                                 低位

                        00000001  00000010  00000011  00000100  

计算机中:int a         低地址                                                                高地址

 

 

 

 

   如何判断主机字节序为大端还是小端

       1.使用联合体,所有变量共有一个空间

             union{int a;char b}tmp;

             tmp.a=1;

             if(tmp.b==1){   小端   }

        2. 取地址

             int a=1;

             char *b=(char*)&a;

             if(*b==1){   小端   }

    主机字节序主要强调的是存储单元大于一个字节的数据类型:

          short / int / long / float / double

主机字节序对网络通信的影响:

   两个不同主机字节序主机之间的数据通信

从对端收sios 对端ip地址是什么意思啊_字节序

 

    所以主机字节序不同,  可能在网络通信中会产生数据二义

想要避免因为主机字节序不同而导致的二义,  则需要在网络中统一字节序标准  --  网络字节序

 

网络字节序 -- 大端字节序

    如果你的主机是小端,  则在网络通信时需要将数据转换为网络字节序后进行发送