06-Linux网络编程-网络基础(华清创客)

网络分层

Link Layer-网络接口与物理层

  • MAC地址:48位 全球唯一,网络设备身份标识
  • ARP/RARP
    ARP:IP地址–>MAC地址
    RARP:MAC地址->IP地址
    PPP协议:拨号协议(GPRS 3G 4G)

Internet-网络层

IP:Internet Protocol(IPv4 IPv6)
ICMP:Internet控制管理协议,ping命令属于ICMP
IGMP:Internet分组管理协议,广播、组播

Transport Layer-传输层

TCP:Transfer control Protocol,面向连接的可靠传输
UDP:user Datagram protocol,无连接的不可靠传输
SCTP:是TCP的增强版,它能够实现多主机、多链路的通信

Application Layer-应用层

HTTP/HTTPS
邮件收发协议:POP3(收)、SMTP(发)、IMTP(可接收邮件的一部分)
FTP
Telnet/SSH:远程登录

嵌入式相关:
NTP:网络时钟协议
SNMP:简单网络管理协议(实现对网络设备集中式管理)
RTP/RTSP:用传输音视频的协议(安防监控)

TCP/IP协议通信模型

封包/拆包

在这里插入图片描述
app:data
transport:TCPhead data
Internet:IPhead TCPhead data
Link:以太网头 IPhead TCPhead data CRC
或WIFI头 IPhead TCPhead data CRC
CRC:Ethernet trail 4bytes(硬件产生和校验,不需要软件处理)
在这里插入图片描述
app data:6-1460字节
Ethernet 一帧长度:64-1518字节
MTU:Max Transfer Unit 最大传输单元(和网络类型相关,以太网MTU=1500)
MSS:Maxium Segment size和网络类型 线路 系统相关,真正的用户数据大小

TCP/IP网络编程预备知识

Socket

  • 是一个编程接口
  • 是一种特殊的文件描述符
  • 代表网络编程的一种资源
  • 并不限于TCP/IP
  • 面向连接
  • 无连接
socket类型
  • 流式套接字(SOCK_STREAM):唯一对应TCP
    提供面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制。
  • 数据包套接字(SOCK_DGRAM):唯一对应UDP
    提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。
  • 原始套接字(SOCK_RAM):对应多个协议,发送穿透了传输层
    可以对较低层次协议如IP/ICMP直接访问

IP地址

  • IP地址分为
    IPV4:32位整数表示
    IPV6:采用128位整数表示
    mobileIPv6:local IP(本地注册的IP),roam IP(漫游IP)
  • 特殊IP地址:
    局域网IP:192.xxx.xxx.xxx 10.xxx.xxx.xxx
    广播IP:xxx.xxx.xxx.255,255.255.255.255(全网广播)
    组播IP:224.xxx.xxx.xxx~239.xxx.xxx.xxx

端口号

16位的数字(1-65535)
已用端口:1-1023(FTP:21 SSH:22 HTTP:80 HTTPS:469)
保留端口:1024-5000
可用端口:5000-65535
  • TCP端口和UDP端口相互独立
    网络里面的通信是由 IP地址+端口号 来决定的

字节序

字节序是指不同CPU访问内存中多字节数据时,存在大小端问题
  • 小端:低对低,低端内存存放低端数据

  • 大端:低端内存存放高端数据
    一般来说
    X86/ARM:小端
    powerpc/mips,ARM作为路由器时,大端模式
    网络传输的时候采用大端模式

  • 本地字节序、网络字节序
    host to net
    u_long htonl(u_long hostlong);
    u_short htons(u_short short);

    net to host
    u_long ntohl(u_long hostlong);
    u_short ntohs(u_short short);

  • IP地址转换函数:
    in_addr_t inet_addr(const char *cp);
    cp:点分形式的IP地址,结果是32位整数(内部包含了字节序的转换,默认是网络字节序模式)
    1、仅适用于IPv4
    2、error 是返回-1
    3、不能用于转换255.255.255.255

    int inet_pton(int af,const char *src,void *dst);
    af:地址协议族(AF_INTET / AF_INET6)
    src:点分形式的IP地址(IPV4)
    dst:转换的结果

    1、适用于IPV4 IPV6
    2、可处理255.255.255.255


L6-D1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值