| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 自主实现HTTP项目——1 -> 正文阅读 |
|
[网络协议]自主实现HTTP项目——1 |
项目概要:从零开始认识客户端到服务器之间如何沟通、联络,如何进行数据之间的通信 客户端与服务器交互原理:在日常生活中,如果我们想要上网的话就要去办理宽带,买路由器,并且由安装师傅帮我们安装并设置一些东西后,我们才可以上网。那我们上网数据是怎样一个传输模式呢?国际标准化组织(ISO)给出了标准OSI七层模型 一、OSI的七层模型:(了解)1.应用层:针对特定应用的协议 2.表示层:设备固有数据格式和网络标准数据格式的转换 3.会话层:通信管理,负责建立和断开通信连接。管理传输层以下的分层 4.传输层:管理两个结点之间的数据传输。负责可靠传输 5.网络层:地址管理与路由选择 6.数据链路层:互联设备之间传送和识别数据帧 7.物理层:相当于安装的线(网线),插入路由器那个水晶头 是不是觉得很复杂呢?有人推出了TCP/IP四层模型/五层模型 二、TCP/IP四层(五层)模型(重点理解)TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇. 2.数据链路层:设备之间的数据帧的传送和识别,如网卡设备的驱动、帧同步、冲突检查、数据差错校验等工作,有以太网、令牌环网等工作在数据链路层 3.网络层(IP协议):负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层 4.传输层(TCP/UDP协议):负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机. 5.应用层(HTTP、SSH、SIP等协议):负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问 协议(Telnet)等. 我们的网络编程主要就是针对应用层一般我们不讨论物理层,所有有我们称TCP/IP四层模型 模型如下:后面我们将一一介绍各个部分的功能 三、什么是协议protocol以及协议的作用1.什么是协议 比如在打LOL中,solo赛中补满100个兵或者第一个杀掉对方的人就算赢,我们都会遵守这种规则。像这种人定的规则,双方都遵守的,我们称之为协议。 2.协议有什么用? 通过协议我们可以从中获得有用的信息 基础知识socket/TCP/HTTP一、socket套接字:数据是由人产生,我们想要从我们这段传送数据,首先得先找到谁要接收我的数据,他的机器上正在跑的哪个进程要接收我的数据,就产生了IP地址和端口号port,一个IP地址标志了互联网中唯一一台计算机,这样我们就可以找到我们要传送给谁,port则标志着这台计算机中正在运行的进程是哪一个,这样我们就可以找到我们要送给谁来,socket内就包含着IP和port 二、如何写一个套接字?(服务器端)1.首先我们先认识以下套接字接口
LOG是我们自己写的打印日志
setsockopt是防止连接断开后无法立马重启所用的函数,这里就要设计到四次挥手的问题,请看以前的文章(TCP那一章,还没写) 到这里我们套接字就完成了 2.绑定ip和端口号先认识一下绑定函数bind及其参数
const struct sockaddr是通用的类型,我们要把他转成我们所对应的结构sockaddr_in,进行填充数据 ? ?
local.sin_family是选择哪一个ip协议,local.sin_port是存放的端口号,local.sin_addr.s_addr存放的是ip地址,给哪一台主机通信,这里我们填的是INADDR_ANY存放的其实就是0,因为我们这里是服务器端,不能只连接一台设备进行通信,我们需要接受多个设备的申请才叫服务器 绑定成功后返回值是零,如果失败为-1,所以可以根据这个判断是否绑定成功 3.监听Listen当我们绑定好后就可以开始监听了,就是看谁来申请跟我连接,认识一下listen接口吧
到这里我们就接收成功了,得到了对方的套接字 前期的准备工作就完成了 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 15:49:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |