网络编程(二)基础预备知识掌握

网络编程预备知识

  • **socket

    • 是一种编程接口
    • 也是一种文件描述符(套接字)
    • 可用于 TCP、UDP、IPX通信
  • socket的类型

    • 流式套接字(SOCK_STREAM):提供一种面向连接的服务,用于TCP传输控制的协议
    • 数据报套接字(SOCK_DGRAM):提供无连接的服务,用于UDP通信
    • 元素套接字(SOCK_RAW):提供底层通信(IP、ICMP、IGMP)
  • IP地址:网络中标识主机的编号,常用点分形式存在”192.168.2.177“

    • IPV4:整个ip占32位,每段8位表示 0~255

    • IPV6:整个ip占128位

    • IP地址:网络号 + 主机号 —>”192.168.2“ + ”177“

      ​ 其中,”2“ 表示网段号,也就是在哪个路由器网络中(网络号+1)

    • 网络ip分类:主要ip的(第一段)前8位数据组成

      • A类网: 0 ~ 127 子网掩码:255.0.0.0
      • B类网:128 ~ 191 子网掩码:255.255.0.0
      • C类网:192 ~ 223 子网掩码:255.255.255.0
      • D类网:224 ~ 239 组播地址
      • E类网:240 ~ 255 保留测试地址
    • 私有IP的地址范围

    • 已知 ip,

      • 网络号: = ip & (umask)= ”192.168.2.177“ & (255.255.255.0)
      • 主机号: = ip & (~umask)= ”192.168.2.177“ & (~(255.255.255.0))
  • 由于网络中只能识别二进制数据,因此ip地址必须进行转换

    • 将代码字符串的ip地址转换成 网络字节序二进制 ,并返回转换后的地址

      in_addr_t inet_addr(const char *cp);
      {
          cp:代码中的字符串ip(主机字节序的ip地址)
          返回值:成功返回二进制字序首地址
          		错误为-1
      }
      
    • 将网络字序的二进制转换为主机字序的ip

      char *inet_ntoa(struct in_addr in);
      {
      	in : 网络字节序的ip地址
          返回值:成功返回主机字节序的ip首地址
      
      }
      
  • 字节序:数据的存储顺序(方式)

    • 小端序:低序字节存储低地址 Ubuntu采用小端序,也就是主机字节序

    • 大端序:低序字节存储高地址 网络采用大端序,也就是网络字节序

      如:0x1122 --> 11 高序字节

  • 端口号:在主机中标识处理网络数据的进程的id

    • 众所周知的端口号:1 ~ 1023 (用户一般不能使用)
    • 已登记的端口号:1024 ~ 49151
    • 动态端口号: 49152 ~ 65535
    • 主机字节序转网络字节序
    u_long htonl(int port)			//host to network long
    u_short htons(int port)   		//host to network short
    
    • 网络字节序转主机字节序
    u_long ntohl(u_long hostlong)		//network to host long
    u_short ntohs(u_short hostshort) 	//network to host short
    
  • 客户端:与用户进行数据交互的界面程序,即,上位机

    服务器:为客户端提供数据服务的后台软件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值