0、如何理解协议
从应?的?度出发,协议可理解为“规则”,是数据传输和数据解释的规则 数据的发送?和接收?要严格遵照这些规则(这些规则肯定是之前就定好的) 例如:第?次发送?件名,第?次传输?件??,第三次发送?件内容 ---- FTP 协议的雏形 试想:如果双?不遵照这个规则,就会出现数据混乱
1、网络分层结构
文章图片
七层模型:OSI/RM开放互联模型(理论上的标准,实现的)
应用层:应用层的协议APP
表示层:将计算机能识别的二进制 转换成 人能识别的数据
会话层:分析数据的通信状态
传输层:进程和进程间的通信(端口信息)
网络层:主机与主机之间的通行(IP地址)
数据链路层:收发的完整的帧数据(在网络上独立传输)mac地址(设备地址)
物理层:不是物理设备,而是物理设备上的接口类型、电流强弱
四层协议:TCP/IP协议层
应用层:应用层的协议 FTP、Telnet、HTTP
传输层(运输层):进程和进程间的通信(端口信息)TCP、UDP
网络层:主机与主机之间的通行(IP地址)IP、ICMP
链路层:收发的完整的帧数据(在网络上独立传输)mac地址(设备地址)ARP RARP
2、TCP和UDP的区别
TCP 面向链接 可靠 排序 检错 失败重传 不支持广播
UDP 无连接 不排序 不检错 不重传 快 支持广播
3、mac地址组成
mac地址:48位,用于标识网络设备,类似于身份证号,且理论上全球唯一。
文章图片
4、ip地址组成
ip地址组成:32位,由{网络ID,主机ID}两部分组成
子网ID:IP地址中由子网掩码中1覆盖的连续位
主机ID:IP地址中由子网掩码中0覆盖的连续位
作用:子网ID标记的是属于哪个网段, 主机ID标识的是网段下具体的主机号
5、ip地址分类(更加合理的利用IP地址)
- A类地址:默认8bit子网ID,第一位为0 广域网(国家-国家,大城市-大城市)
0xxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx/255.0.0.0
B类地址:默认16bit子网ID,前两位为10 城域网(城市-城市)
10xx xxxx xxxx xxxx xxxx xxxx xxxx xxxx/255.255.0.0
C类地址:默认24bit子网ID,前三位为110 局域网
110x xxxx xxxx xxxx xxxx xxxx xxxxxxxx/255.255.255.0
D类地址:前四位为1110,多播地址
E类地址: 前五位为11110,保留为今后使用
A,B,C三类地址是最常用的
- 公有IP(可直接连接Internet)
经由InterNIC所统一规划的IP
私有IP(不可直接连接Internet )
主要用于局域网络内的主机联机规划
文章图片
32位,由1、0组成,并且1、0分别连续
7、端口
网络中用于标识不同主机的进程
TCP、UDP维护各自独立的端口号
8、端口号
无符号短整型类型
9、端口的分类
知名端口(1~1023)
由互联网数字分配机构(IANA)根据用户需要进行统一分配
例如:FTP—21,HTTP—80
等服务器通常使用的范围; 若强制使用,须加root特权
动态端口(1024~65535)
应用程序通常使用的范围
端口号类似于进程号,同一时刻只能标志一个进程,可以重复使用
【计算机网络编程|计算机网络学习笔记1-网络编程基础】10、网络程序设计模式
C/S模式
传统的网络应用设计模式,客户机(client)/服务器(server)模式。需要在通讯两端各自部署客户机和服务器来完成数据通信。
B/S模式
浏览器(broswer)/服务器(server)模式。只需在一端部署服务器,而另外一端使用每台PC都默认配置的浏览器即可完成数据的传输。
11、字节序的概念
是指多字节数据的存储顺序(多个字节看成一个整体处理,单个字节无所谓顺序)
分类
小端格式:将低位字节数据存储在低地址
大端格式:将高位字节数据存储在低地址
注意
LSB:低地址
MSB:高地址
注意:大小端 是系统自动确定,小端存储是反着来,那么取出也是反着来,不影响数据正确性
问题:如何确定当前系统是大端存储 还是 小端存储?
#include
typedef union
{
//共用体 成员公用一个空间
unsigned short data;
unsigned char buf[2];
}DATA;
int main(int argc, char *argv[])
{
printf("%d\n",sizeof(DATA));
DATA ob;
ob.data = https://www.it610.com/article/0x0102;
//如果buf[0]=0x01大buf[0]=0x02
if(ob.buf[0]==0x01 && ob.buf[1]==0x02)
{
printf("大端格式\n");
}
else if(ob.buf[0]==0x02 && ob.buf[1]== 0x01)
{
printf("小端格式\n");
}
return 0;
}
文章图片
12、字节序的特点
文章图片
网络环境中流通的数据均为大端格式,异构计算机通讯,需要转换自己的字节序为网络字节序
推荐阅读
- 计算机网络|计算机网络---TCP/IP网络编程实验
- 计算机网络|计算机网络、网络编程笔记
- 计算机网络|计算机网络 --- 初始网络
- c#|C# 操作Windows注册表
- IPD|IPD解读--华为500强的研发第一名,除了钱还有IPD
- 计算机网络|计算机网络期末4小时速成
- Linux|传输层TCP与UDP
- Linux|Linux编程——网络编程
- 青龙傻妞若兰|解决某东对ip限制若兰(nolanjdc)无法获取短信验问题