linux网络基础

1.网络覆盖范围:局域网/城域网/广域网 互联网/因特网 以太网/令牌环网—组网方式
2.在网路中必须唯一标识每一台主机,才能实现点到点的精确通信
ip地址:uint32_t 无符号4个字节的整数
网络通信中的每条数据都必须具备:源IP地址/目的IP地址–表示数据从哪个主机来,到哪个主机去
目的IP地址:能够让网络中的路由器为每一条数据根据目的地址选择不同的路径准确到达对端主机
源IP地址:能够让对端主机知道数据是谁发送,一遍回复数据

3.IP地址使网络中实现主机与主机之间的通信,但是主机是哪个有很多进程;通信中必须标识一条数据应该由哪个进程处理
端口:uint16_t 无符号两个字节的整数
一个进程可以使用多个端口,但是一个端口只能被一个进程占用
网络中的每条数据都必须具备:源端口/目的端口 表示数据从哪个主机来,到按个主机去
网络通信:不同主机之间的进程间通信
为什么不使用pid标识进程而是使用新的字段端口来标识–进程的pid会随着程序的重启而发生改变,而端口却不会;

4.通过ip地址和端口可以实现不同主机之间进程间通信(网络通信)
网络通信协议:网络通信中数据格式的约定
协议分层:
对通信协议在不同的通信环境中进行封装,不同层次使用不同协议,提供不同的服务;将通信环境划分出来,通信的实现更加简单,更容易形成规范
网络通信环境中的协议分层:
ISO:OSI七层参考模型:应用层/表示层/会话层/传输层/网络层/数据链路层/物理层
TCP/IP五层模型:应用层/传输层/网络层/链路层/物理层
TCP/IP是一组协议栈/协议簇:其中包含许多协议,IP和TCP协议只是其中比较典型的两种
应用层:负责应用程序之间的数据沟通;例如qq与qq之间的通信协议协商qq的数据格式 典型协议:HTTP/DNS/FTP
传输层:负责不同主机进程间的数据传输;因为传输层的协议中包含主要信息就是端口 典型协议:TCP/UDP
网路层:负责地址管理和路由选择;为网络中的数据选择合适的路径;IP信息 典型协议:IP 典型设备:路由器
链路层:负责相邻设备之间的数据帧识别以及传输;网卡设备的MAC地址信息 典型协议:Ethernet 典型设备:交换机
物理层:负责物理光电信号的传输 典型协议:以太网协议 典型设备:集线器

协议分层:根据提供的服务不同,分出不同的通信层次,在每个层次使用不同的协议实现数据格式约定–将复杂的网络通信环境简化清晰

5.网络字节序
字节序:cpu在内存中对数据进行存取的顺序—取决于cpu架构
cpu架构:x86架构cpu—小端 /mips架构cpu—大端
大端字节序:低地址存高位
小端字节序:低地址存低位
主机字节序:当前主机的字节序
网络通信是不同主机之间的通信,但是不同主机上的主机字节序会对通信造成极大影响:数据二义
因此网络通信中必须统一字节序—网络字节序,才能避免这种问题
不管你的主机是大端还是小端,网络通信的时候统一将数据转换为网络字节序–大端字节序
如果通信主机是小端主句,则在网络通信时需要将数据进行字节序转换才能发送
并不是所有的数据都需要转换:需要转换的数据关键点在与内存中一次存取大小超过一个字节的数据—short int long float double
但是字符串char buf[1024]这是不需要进行转换的–字符串本身就是按字节存储的
如何判断一个主机的字节序是大端还是小端
unio tmp{int a,char b(b就是a[0]);}temp.a=1 if(tmp.b==1){小端};
1.网络覆盖范围:局域网/城域网/广域网 互联网/因特网 以太网/令牌环网—组网方式
2.在网路中必须唯一标识每一台主机,才能实现点到点的精确通信
ip地址:uint32_t 无符号4个字节的整数
网络通信中的每条数据都必须具备:源IP地址/目的IP地址–表示数据从哪个主机来,到哪个主机去
目的IP地址:能够让网络中的路由器为每一条数据根据目的地址选择不同的路径准确到达对端主机
源IP地址:能够让对端主机知道数据是谁发送,一遍回复数据

3.IP地址使网络中实现主机与主机之间的通信,但是主机是哪个有很多进程;通信中必须标识一条数据应该由哪个进程处理
端口:uint16_t 无符号两个字节的整数
一个进程可以使用多个端口,但是一个端口只能被一个进程占用
网络中的每条数据都必须具备:源端口/目的端口 表示数据从哪个主机来,到按个主机去
网络通信:不同主机之间的进程间通信
为什么不使用pid标识进程而是使用新的字段端口来标识–进程的pid会随着程序的重启而发生改变,而端口却不会;

4.通过ip地址和端口可以实现不同主机之间进程间通信(网络通信)
网络通信协议:网络通信中数据格式的约定
协议分层:
对通信协议在不同的通信环境中进行封装,不同层次使用不同协议,提供不同的服务;将通信环境划分出来,通信的实现更加简单,更容易形成规范
网络通信环境中的协议分层:
ISO:OSI七层参考模型:应用层/表示层/会话层/传输层/网络层/数据链路层/物理层
TCP/IP五层模型:应用层/传输层/网络层/链路层/物理层
TCP/IP是一组协议栈/协议簇:其中包含许多协议,IP和TCP协议只是其中比较典型的两种
应用层:负责应用程序之间的数据沟通;例如qq与qq之间的通信协议协商qq的数据格式 典型协议:HTTP/DNS/FTP
传输层:负责不同主机进程间的数据传输;因为传输层的协议中包含主要信息就是端口 典型协议:TCP/UDP
网路层:负责地址管理和路由选择;为网络中的数据选择合适的路径;IP信息 典型协议:IP 典型设备:路由器
链路层:负责相邻设备之间的数据帧识别以及传输;网卡设备的MAC地址信息 典型协议:Ethernet 典型设备:交换机
物理层:负责物理光电信号的传输 典型协议:以太网协议 典型设备:集线器

协议分层:根据提供的服务不同,分出不同的通信层次,在每个层次使用不同的协议实现数据格式约定–将复杂的网络通信环境简化清晰

5.网络字节序
字节序:cpu在内存中对数据进行存取的顺序—取决于cpu架构
cpu架构:x86架构cpu—小端 /mips架构cpu—大端
大端字节序:低地址存高位
小端字节序:低地址存低位
主机字节序:当前主机的字节序
网络通信是不同主机之间的通信,但是不同主机上的主机字节序会对通信造成极大影响:数据二义
因此网络通信中必须统一字节序—网络字节序,才能避免这种问题
不管你的主机是大端还是小端,网络通信的时候统一将数据转换为网络字节序–大端字节序
如果通信主机是小端主句,则在网络通信时需要将数据进行字节序转换才能发送
并不是所有的数据都需要转换:需要转换的数据关键点在与内存中一次存取大小超过一个字节的数据—short int long float double
但是字符串char buf[1024]这是不需要进行转换的–字符串本身就是按字节存储的
如何判断一个主机的字节序是大端还是小端
unio tmp{int a,char b(b就是a[0]);}temp.a=1 if(tmp.b==1){小端};

网络基础2-1

应用层协议:负责应用程序之间的数据沟通–而应用程序是程序员写的,因此,应用层协议实际也是程序员自己定的。
1.自定制协议:自己定义的协议,私有协议
网络版计算器:
客户端向服务端传递两个数字以及一个运算符,服务端收到数据并进行解析得到数字和运算符,然后进行运算,最后将结果返回给客户端
使用结构体进行数据对象的二进制结构化组织,进行数据传输/可持久化数据存储

序列化:将数据对象按照指定协议进行组织成可持久化存储/数据传输的二进制数据串
反序列化:将持久化存储或者数据传输的二进制数据串按照指定协议解析出各个数据对象
而使用结构体来组织数据其实就是数据对象的二进制序列化
常见的数据序列化方式有很多:json序列化;protobuf序列化

2.知名协议:HTTP协议–超文本传输协议–http协议有一个非常好的优点:
http协议留有程序员一定的自制空间
HTTP协议–超文本传输协议,是一种用于分布式,协作式和超媒体信息系统的应用层协议。HTTP是一个客户端终端和服务器终端请求和应答的标准
HTTP工作原理:HTTP协议采取请求/响应模式。客户端向服务器发送一个请求报文,请求报文包含请求的方法,URL,协议版本,请求头部和请求数据。服务器以一个状态进行 响应,响应的内容包括协议的版本,成功或错误代码,服务器信息,响应头部和响应数据
网址:统一资源定位符(定位网络中唯一的资源)-URL
统一资源定位符如何定位网络中的唯一资源------URL的格式以及其所包含的要素
https://username:password@www.baidu.com/s?wd=c%2B%2B&rsv_spt=1#ch
https–协议方案名称,是加密的http协议 : //–是一个间隔符
username:password–本次访问服务器的用户认证信息
www.baodu.com:域名–经过域名解析得到对应服务器的IP地址
/s–请求的资源在服务器上的路径,不一定是实体资源
?wd=c%2B%2B&rsv_spt=1–查询字符串:当前客户端提交给服务端的数据–由一个个key=val形式的键值对组成,键值对之间以&符号隔开

用户提交给服务器的查询字符串中的val需要进行URL编码–因为URL中有很多特殊字符具有特殊含义,而用户提交的数据也包含有特殊的字符就会造成歧义,因此需要对val进行URL编码

URL编码:将特殊字符的每一个字节,都转换成16进制数字的字符 例如:±>2b
万一万一用户本身提交的数据就有2b,也会造成歧义,因此每一个字节进行转换之后,需要在前面加上%表示紧跟其后面的两个字符经过了URL编码 + ->%2b

URL解码:得到查询字符串后,在val中遇到%,则认为紧跟其后的两个字符需要解码–将两个字符转化为数字

#ch:片段标识符—指向html中的一个标签

HTTP协议格式:就是协议的实现
首行:
请求首行:包含三大信息,以空间进行间隔,并且以\r\n作为结尾;
请求方法:不同的请求方法,具有不同的主要负责功能
GET:请求获取一个资源,并要求服务器返回实体数据
POST:向服务器提交表单数据
HEAD:请求获取一个资源,但是并不要求服务器返回实体数据
GET/POST:get也能向服务器提交数据,但是提交的数据在url的查询字符串中get是没有正文的/而post提交的数据在正文中
URL:主要信息就是请求的资源路径以及提交的查询字符串
协议版本:
响应首行:包含三大信息,以空间进行间隔,并且以\r\n作为结尾;
协议版本:
响应状态码:向客户端反应本次请求的处理结果状态—包含五大类 :
1xx:一些描述信息
2xx:本次请求正确处理完毕 200-请求成功
3xx:本次请求的资源可能移动到其他位置了,请客户端重新请求新的位置— 资源重定向
4xx:客户端错误 404
5xx:500 服务器内部错误
状态码描述:对于本次状态码的描述信息

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值