【Linux】网络基础(一)

1. IP地址

  • ip地址在网络中唯一标识一台主机

1.1 IPv4

  • 本质上是一个无符号整型32位的整数,范围在0~2^32,整个ip地址占用4个字节
  • 通常标识ip时,使用点分十进制的方式来表示

例如:192 . 168 . 153 . 128

.分割,每一个数字都占用一个字节,这个数字的取值范围为[0 , 255]

1.2 IPv6

  • 本质上是一个无符号整型128位的整数,范围在0~2^128,整个ip地址占用16个字节
  • 通常标识ip时,使用冒分16进制的方式来表示

例如:ABCD : EF01 : 2345 : 6789 : ABCD : EF01 : 2345 : 6789

:分割,每一个数字都占用两个字节,这个数字的取值范围为[0 , 0xffff]

2. MAC地址

  • MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址
  • MAC地址本质上是一个无符号整型48位的整数,使用冒分16进制的方式来表示,整个MAC地址占用6个字节

例如:08 : 00 : 27 : 03 : fb : 19

:分割,每一个数字都占用一个字节,这个数字的取值范围为[0 , 0xff]

3. port端口号

  • 在一台机器中唯一标识一个进程
  • 本质上是一个无符号整型16位的整数,范围在0~2^16,整个port端口号占用2个字节
  • 端口号用来标识一个进程,告诉操作系统,当前的数据交给哪一个进程来处理
  • IP地址+端口号 能够唯一标识网络上的某一台主机的某一个进程
  • 一个端口号只能被一个进程占用
  • 一个进程可以绑定多个端口号,一个端口号只能被一个进程绑定
  • 源端口号:标识数据是从哪里发的
  • 目的端口号:标识数据要发到哪里

4. 字节序

在这里插入图片描述

  • 主机字节序:取决于电脑本身的字节序是大端字节序还是小端字节序
  • 网络字节序:规定网络当中传输数据使用的是大端字节序

意味着:如果你的主机字节序是小端字节序,那么你通过网络进行传输数据之前,需要把你的数据从小端字节序转化为大端字节序

  • 常见的X86体系结构的操作系统是小端字节序机器

检测本机字节序算法

#include <stdio.h>
#include <unistd.h>

int main()
{
  union D
  {
    int a;
    char b;
  }data;
  data.a = 1;
  if(data.b = 1)
    printf("小端字节序\n");
  else
    printf("大端字节序\n"); 
  return 0;
}

5. 字节序转换接口

#include <arpa/inet.h>
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
  • ip地址从主机字节序转换为网络字节序使用htonl接口
  • ip地址网络字节序转换为主机字节序使用ntohl接口
  • port端口号从主机字节序转换为网络字节序使用htons接口
  • port端口号网络字节序转换为主机字节序使用ntohs接口

6. TCP协议与UDP协议的区别

TCP:

  • 面向连接:TCP通信双方在发送数据之前,需要先建立连接,才能发送数据
  • 传输可靠:TCP保证传输的数据是可靠有序的到达对端
  • 面向字节流:字节流中的数据是没有明显的边界的:一堆数据放在一起成为一个序列,看不出来任何的实际意义

UDP:

  • 无连接:UDP通信双方在发送数据之前,是不需要进行预先沟通的,客户端只需要知道服务端的IP地址和端口号,就可以发送数据了
  • 不可靠不保证数据能够可靠达到对端,也不保证数据到达的先后顺序
  • 面向数据报:UDP对于应用层和传输层数据递交的时候,都是整条数据交付
  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值