网络基础入门:OSI模型、ip地址、port端口、网络字节序


ip地址,端口,协议(协议分层OSITCP/IP)网络数据传输流程

网络发展背景

WAN广域网
MAN城域网
LAN局域网

协议:通信双方的约定。
网络协议:网络通信环境中,数据的约定格式。
通信协议标准:网络互联的前提。


协议分层

一种协议的封装,便于使用。
对服务,接口,协议进行明确划分。
形成标准实现起来就简单了。

ISO制定的OSI七层参考模型:

  1. 物理层
  2. 数据链路层
  3. 网络层
  4. 传输层
  5. 会话层
  6. 表示层
  7. 应用层

TCP/IP五层模型:

  1. 物理层
  2. 链路层
  3. 网络层
  4. 传输层
  5. 应用层 (将OSI中会话层、表示层、应用层整合)

应用层

负责应用程序之间的数据沟通。

  • 常见协议:HTTPFTPDHCPSMTPDNSSSHSSLTELNET协议等。

传输层

负责端与端之间的数据传输。

  • 常见协议:TCPUDP协议等。

  • 设备:计算机操作系统

网络层

负责地址管理与路由选择。

  • 常见协议:IPARPRARP协议等。
  • 设备:路由器

链路层

负责相邻设备之间的数据帧传输。

  • 常见协议:Ethernet协议 / ETH协议(以太网)
  • 设备:交换机

物理层

负责光电信号的传输。(以太网协议)

  • 设备:集线器(用于信号放大等)

网络通信中数据的传输流程

在这里插入图片描述


ip地址与port端口

  • ip地址:
    IPV4版本):uint32_t类型的数据(范围0~43亿左右),在网络中唯一标识一台主机。
    IPV6版本):uchar ip[16]类型数据,但不向前兼容IPV4,因此没有推广起来。
    DHCP动态地址分配计数:谁上网,给谁分配。不上网就不分配。
    NAT技术:地址替换,实现多人使用同一地址上网。

因为数字不好记忆,所以使用点分十进制形式来展示ip地址。

每条数据中都会包含source ipdestination ip标识了这条数据从哪儿来,到哪儿去。

  • 端口:
    uint16_t类型的数据,在网一台主机上标识一个进程。(端口范围0~655350~1024不推荐使用,可能已经预留)
    (因为pid会改变,而端口号不会改变,所以不使用进程pid

网络程序分为客户端服务端,其中主动发起请求的一方是客户端,被动在指定位置接受请求的一方是服务端。
一个端口只能被一个进程占用,但一个进程可以使用多个端口。

每条数据中都会包含source portdestination port标识了这条数据从哪个进程,到哪个进程。
每条数据中包含:sipsportdipdportproto(五元组:表示一条通信)


网络字节序

CPU在内存中对数据进行存取的顺序。

  • 大端字节序:低地址存高位
  • 小端字节序:低地址存低位

大小端取决于:CPU架构(如小端X86_64架构、大端MIPS架构)

如果通信两端主机字节序不同,就会造成数据二义性(针对存储大于一个字节的数据,字符串char a[] = "giturtle"不会造成二义性)。

主机字节序:当前计算机的字节序。

那么如何解决这种二义性的现象?定立网络字节序标准:通信双方都是用网络字节序(大端字节序),同时也提高了程序的可移植性

字节序的判定

伪代码:

union {
	int a = 1;
	char b;
};
//进行判定
if(b == 0)
	big_endian;
if(b == 1)
	little_endian;

TCP与UDP

传输层的两个协议:TCPUDP

孰优孰劣?视使用场景而定~

  • tcp(传输控制协议):面向连接,可靠传输,面向字节流服务(管道等)
  1. 面向连接:通信之前,先建立连接,确保双方在线。
  2. 可靠传输:网络正常的情况下,数据不会丢失。
  3. 字节流服务:传输的是二进制数据块,首先传入缓冲区,区满再一次性发送,减少I/O次数。
    【优点】:传输灵活。
    【缺点】:二进制数据块在缓冲区会堆压,如tcp的黏包问题,因为没有明显的数据界限。

TCP为了实现可靠传输,牺牲了部分性能。

  • UDP(用户数据报协议):无连接,不可靠,面向数据报服务
    面向数据报:每条数据有长度标识,所以数据间有明显间隔。整条发送,整条接受。
    【优点】:不会产生黏包问题。
    【缺点】:传输不够灵活

UDP要保证传输速度,如视频等。

使用场景

TCPUDP
传输文件保证数据安全(对文件安全性要求高)对数据安全性要求不是很高(对数据实时性要求高)
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

giturtle

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

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

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

打赏作者

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

抵扣说明:

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

余额充值