【计算机网络】网络框架

一、网络协议和分层

1.理解协议

什么是协议?实际上就是约定。如果用计算机语言进行表达,那就是计算机协议。

2.理解分层

分层是软件设计方面的优势(低耦合);每一层都要解决特定的问题

TCP/IP四层模型和OSI七层模型的概念

二、网络传输基本流程

1.预备知识

(1)协议报头

① 协议每一层都有,而每一个协议最终表现就是协议都要有报头

② 协议通常是通过协议报头来进行表达的

③ 每一份数据最终在被发送或者在不同的协议层中,都要有自己的报头

协议报头就相当于快递单,协议就相当于是怎么写快递单

(2)局域网简介

局域网内的两台主机可以直接通信;每一台主机都有网卡,每一张网卡都有唯一的MAC地址

MAC地址:表明自己在局域网中的唯一性

局域网:①以太网 ②令牌环网 ③无线LAN

2.局域网通信原理

如何判断哪里是报头,哪里是有效载荷?-- 解包

如何判断自己的有效载荷要交给上层的哪一个协议呢?-- 分用

每一层协议的报头中,都会有解包 分用的相关信息 -> 每一层协议都要解决的问题

3.网络传输流程

路由器必须要横跨至少两个网络,所以路由器至少要有两个网络接口

4.IP地址/MAC地址

IP地址:在网络层使用,可以实现跨网络的通信和路由(最终的地址)

MAC地址:在数据链路层使用,可以实现局域网内部的寻址和数据传输(阶段性地址)

三、网络编程基本概念

1.端口号

(1)认识端口号

我们采用端口号port来标识一台主机上进程的唯一性【ip + port = socket】

IP地址(主机在全网的唯一性)+ 该主机上的端口号(进程在主机的唯一性)= 全网唯一进程

网络通信的本质:其实就是进程间通信!

(2)注意事项

① IP保证全网唯一,port保证在主机内部的唯一性

② 进程已经有pid了,为什么要有port呢?

a)系统与网络解耦 -- 系统是系统,网络是网络,单独设置

b)需要客户端每次都能找到服务器进程,这就要求服务器进程要有一个固定的标识 -- port

③ 底层OS如何根据port找到指定的进程?通过操作系统内部维护的映射关系

2.UDP/TCP

(1)UDP 用户数据报协议:传输层协议、无连接、不可靠传输、面向数据报

(2)TCP 传输控制协议:传输层协议、有连接、可靠传输、面向字节流

这里所说的可靠/不可靠是一个中性词,没有谁好谁坏,UDP/TCP具体使用哪个要看场景

3.网络字节序

已知计算机有大端和小端之分,为使网络程序具有可移植性 -> 规定:网络中的数据都是大端

4.套接字

IP + port = socket(套接字)。套接字种类很多:网络套接字、原始套接字、unix域间套接字

三种套接字就要设计三套接口吗?不用,利用struct sockaddr复用同一套接口

如果是网络套接字编程:使用socket相关函数时,传参传递的是 struct sockaddr_in

如果是unix域间套接字编程:使用socket相关函数时,传参传递的是 struct sockaddr_un

相关推荐
mount_myj14 分钟前
长长久久【C语言】
c语言
有谁看见我的剑了?24 分钟前
linux 添加硬盘后系统识别不到硬盘处理
linux·运维·服务器
易连EDI—EasyLink38 分钟前
易连EDI–EasyLink实现OCR智能数据采集
网络·人工智能·安全·汽车·ocr·edi
小码哥_常1 小时前
解锁AI编程密码:程序员常用的10个AI提示词
后端
@insist1231 小时前
信息安全工程师考点精讲:身份认证核心原理与分类体系(上篇)
大数据·网络·分类·信息安全工程师·软件水平考试
九转成圣1 小时前
Java 性能优化实战:如何将海量扁平数据高效转化为类目字典树?
java·开发语言·json
SmartRadio1 小时前
ESP32-S3 双模式切换实现:兼顾手机_路由器连接与WiFi长距离通信
开发语言·网络·智能手机·esp32·长距离wifi
laowangpython2 小时前
Rust 入门:GitHub 热门内存安全编程语言
开发语言·其他·rust·github
我叫汪枫2 小时前
在后台管理系统中,如何递归和选择保留的思路来过滤菜单
开发语言·javascript·node.js·ecmascript
_.Switch2 小时前
东方财富股票数据JS逆向:secids字段和AES加密实战
开发语言·前端·javascript·网络·爬虫·python·ecmascript