网络 计算机网络预备知识

网络的划分:局域网(几米到几千米);城域网(几千米到几十千米);广域网(几十千米以上)

IP地址

IP地址是一个无符号4个字节的整数uint32_t,在网络中作为主机的唯一标识
网络中的每条数据中都会包含源端IP地址对端IP地址----标识这个数据从哪个主机发出,要交给哪个主机来接收
ip地址最大有32个,最多只能表示出4g的IP地址数量,也就是最多能使用43亿个IP地址,地球上的人和每个人都用肯定是不够的。也是目前使用最多的IPv4协议。为了满足该要求,扩展到IPv6协议,能用128位来表示IP地址,uint8_t addr[16]这就可以从根本上解决了我们的IP地址数量问题。但是目前还并未推广,目前大多数程序都是遵循IPv4协议来设计的,如果要改变协议,成本和时间的代价会很大。而且现在有DHCP和NAT技术配合上IPv4可以缓解该问题

端口

端口号是一个无符号2个字节的整数uint16_t,在一台主机上唯一标识一个进程。在编写通信程序时,必须告诉计算机,发往哪个端口的数据应该交给我处理。一个端口只能被一个进程占用,但是一个进程可以使用多个端口(多端口多服务)。
在网络通信的每条数据中,都会包含源端端口号对端端口号----标识了这个数据从哪个进程发送出来,要交给哪个进程来处理

网络通信协议

计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息. 要想传递各种不同的信 息, 就需要约定好双方的数据格式
网络通信协议:网络通信中的数据格式约定(协议-约定)----遵循统一协议标准,才能实现实质通信,实现网络互联。
协议分层:根据通信场景不同,提供的服务不同,使用的协议不同进行的层次划分。典型协议分层有两种,OSI七层参考模型TCP/IP五层模型

OSI七层参考模型
该模型采用分层结构化信息,将整个网络按照功能划分为7层,由低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
TCP/IP五层模型

TCP/IP五层模型功能协议及设备
物理层负者物理光电信号的传输以太网协议(ETC),典型设备集线器
链路层负者相邻设备之间的数据传输,网卡硬件地址的描述以太网协议(MAC地址),典型设备交换机
网络层负责地址管理和路由选择,主机IP地址的描述IP协议,典型设备路由器
传输层使源端和目的端主机上的对等实体可以进行会话,端与端的描述TCP、UDP
应用层面向用户的层次,为用户提供服务,负责应用程序之间如何沟通,通信数据格式的约定HTTP、FTP、DNS、DHCP

网络通信数据的封装与拆封流程

AP1 先将其数据交给本主机的应用层。在应用层,将应用程序数据加上必要的控制信息(应用层的报头)Hs就变成了应用层的协议数据单元(数据包),向下传给传输层。报头(Header)及报尾(Tailer)是对等实体间为了实现有效的相互通信所需加上的控制信息,增加报头、报尾等控制信息的过程称为封装。封装后得到的应用层数据包被称为应用层协议数据单元(APDU)。
传输层收到这个数据单元后,加上本层的控制信息 H4、变成了传输层的协议数据单元,即分段(Segment),向下交给网络层。网络层收到这个分段后,加上本层的控制信息 H3就变成了网络层的 IP 分组,并向下交给数据链路层。在数据链路层;控制信息被分成两部分,分别加到收到的 IP 分组的首部(H2)和尾部(T2),变成数据链路层的帧(Frame)。帧再向下传到物理层,由于物理层是比特流的传送,所以不再加控制信息。此时比特流传送从首部开始。再往下,将其转换为电信号或光信号通过传输介质传送到接收端。
在这里插入图片描述
在接收端,当数据逐层向上传递时,各种报头及报尾将被一层一层地剥去,这样的过程称为拆封。例如,数据链路层在将数据交给网络层之前要去掉相应的帧头和帧尾,还原成网络层的IP分组,网络层则在将数据交给传输层之前要去掉分组报头,以此类推,最后数据以APDU 的形式到达接收方的应用层。

网络字节序

字节序:cpu对数据在内存中以字节为单位的存取顺序
主机字节序:一个主机字节序的大小端取决于cpu架构—X86 / MIPS
大端字节序:低地址存高位
小端字节序:低地址存低位
例如int a = 0x01020304在大小端不同的存储方式
char* b = (char*)&a 内存低地址 b[0] b[1] b[2] b[3] 内存高地址
大端字节序:b[0] = 01 b[1] = 02 b[2] = 03 b[3] = 04
小端字节序:b[0] = 04 b[1] = 03 b[2] = 02 b[3] = 01

主机字节序对网络通信的影响:不同字节序的主机进行通信容易造成数据二义
在这里插入图片描述
网络字节序:是网络通信中的字节序标准(将自己的数据的字节序转换成标准字节序后再进行传输),从而避免了因为主机字节序不同而造成的数据二义。网络字节序的标准是大端字节序
并非所有的数据都要进行网络字节序的转换
如何判断哪些数据需要字节序转换:存储单元大于一个字节的数据类型需要字节序转换,例如int16_tint32_tint64_tshortlong等。以单字节为存储单元的数据不需要字节序转换,例如uint8_tchar
如何判断一主机是大端字节序还是小端字节序

TCP协议和UDP协议的区别及使用场景

1、TCP是面向连接的传输层协议。UDP是无连接传输层协议,面向数据报
2、TCP是点对点服务。UDP是多对多连接交互通信
3、TCP是可靠的、无差错、无丢失、面向字节流的通信协议,速度慢但是是可靠传输。UDP是尽最大努力交付,速度快但不保证可靠性。

使用场景
TCP:应用于安全性要求高的场景(文件传输)
UDP:应用于实时性要求高的场景(视频,音乐传输)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

WhiteShirtI

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

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

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

打赏作者

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

抵扣说明:

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

余额充值