`

kimmking 的讲座【TCPIP】

阅读更多

 

菜鸟大kimmking()  13:02:32

 

ftp是传输文件最高效的方式之一。

 

为毛呢

 

1、基于tcp

 

2、足够简单

 

3、功能强大

 

先说第一点,直接基于tcp,省去了很多不必要的开销。

 

菜鸟大kimmking()  13:03:48

 

足够简单,大概只有20几个命令。

 

和几十个状态嘛

 

这两点结合起来,就是高性能的基础

 

菜鸟大kimmking()  13:04:48

 

一个ftp传输的过程,

 

先是clientserver握手

 

client发出helo命令,server响应220成功或331之类的需要登录

 

然后client传递用户名密码,过去

 

菜鸟大kimmking()  13:06:05

 

如果验证通过,client就可以发命令对server进行操作了。

 

常见的操作,list put get mput mget 之类的

 

天之痕丶()  13:06:44

 

ftp是最低层的传输协议么?

 

菜鸟大kimmking()  13:06:55

 

说过了。

 

还有delete

 

这几个都是ftp的数据操作命令。

 

这里要引入一个ftp非常nb的设计。

 

命令与数据传输的分离。

 

菜鸟大kimmking()  13:08:12

 

clientserver端建立一个socket连接后,

 

老男孩²º¹²()  13:08:26

 

ftp基于tcp, 这是应用层的协议

 

菜鸟大kimmking()  13:08:33

 

这个连接,仅仅负责传输client发出的命令,

 

以及返回server端的响应状态。

 

天之痕丶()  13:10:18

 

ftpsocket的区别在哪啊

 

菜鸟大kimmking()  13:11:19

 

ftp基于tcptcp基于socket

 

list put get mput mget 之类的命令

 

都是要上传和下载数据的。

 

有个细节可能大家不知道。

 

list 返回服务器端当前路径下的所有文件信息

 

菜鸟大kimmking()  13:12:21

 

就是 windows下的 dir

 

linux下的ls

 

但是这些信息,不是通过命令的这个tcp连接发过来的

 

跟文件传输一样

 

走额外的socket通道。

 

菜鸟大kimmking()  13:13:27

 

这里,ftp又引入几个新概念

 

主动模式和被动模式。

 

老男孩²º¹²()  13:13:50

 

ftp是协议, socket是端口句柄, 是对tcp的封装应用, 两者不是一类东西

 

天之痕丶()  13:14:04

 

可以理解ftp集成很多socket吗?

 

飞走了()  13:14:19

 

socket不是推送吗

 

菜鸟大kimmking()  13:14:20

 

所有的网络通信,基本上都是socket

 

老男孩²º¹²()  13:14:23

 

不能

 

菜鸟大kimmking()  13:14:27

 

comet是推送

 

 

 

飞走了()  13:14:48

 

 

 

老男孩²º¹²(283137706)  13:14:50

 

socket是种使用ftp/tcp之类网络协议的方式, 不能和协议来比较

 

菜鸟大kimmking()  13:15:24

 

例如,当一个机器在防火墙内被保护

 

飞走了(77606365)  13:15:27

 

我们最近好像要做一个东西,用socket推送东西

 

菜鸟大kimmking()  13:15:40

 

他可能不能创建一个监听的端口

 

老男孩²º¹²(283137706)  13:15:48

 

好比, ftp就像规定了一种电线的规格, socket就是插头,有了插头才能用电线

 

菜鸟大kimmking()  13:15:55

 

只能主动的去连接别人

 

这几句,能听得懂吧

 

 

小怪兽()  13:16:24

 

哈哈

 

说得好

 

我喜欢插头插座

 

菜鸟大kimmking()  13:16:53

 

tcp连接,总是一个先listenning,另外一个来connecting

 

小怪兽(997585659)  13:16:54

 

*,,,太有感觉了

 

菜鸟大kimmking()  13:17:18

 

拿上面的比喻就是,

 

小怪兽(997585659)  13:17:26

 

应该说tcp一直在端口监听

 

菜鸟大kimmking()  13:17:35

 

得先有一个插座,

 

client就是插头

 

小怪兽()  13:17:43

 

也对

 

菜鸟大kimmking()  13:17:58

 

哪个插头都能来插

 

client-server模式

 

ftp的主被动模式就是

 

由谁来创建一个listenning的端口

 

让对方来connecting

 

菜鸟大kimmking()  13:20:10

 

对于没有防火墙的情况,这两个模式差别不大。

 

其实 tcp连接一旦建立,通话双方基本是对等的。

 

菜鸟大kimmking()  13:21:34

 

ftp通过主连接传输命令和响应,通过额外的连接来传输数据。

 

就像是坐飞机,

 

人就是命令。

 

数据是托运的行李。

 

菜鸟大kimmking()  13:22:56

 

另外,引入了几个常见文件模式

 

asciibinary

 

二进制模式下,文件的内容被直接发送到对方

 

不会做任何处理。

 

菜鸟大kimmking()  13:23:58

 

ascii的文本模式下,一般按行读取,可能会有编码问题。

 

好了,这些文件传输的基本功能ok了。

 

如果ftp只有这些基本功能,不会应用的这么广泛。

 

菜鸟大kimmking()  13:25:11

 

ftp用来处理大文件,还有一个巨大的优势是支持断点续传

 

这包括上传和下载的断点续传

 

飞走了()  13:25:27

 

ssh传文件,敲指令用的是这个吗

 

菜鸟大kimmking()  13:25:38

 

ps http只支持下载的续传

 

老男孩²º¹²(283137706)  13:25:43

 

ssh是另外一个协议

 

菜鸟大kimmking()  13:25:46

 

ssh传文件的方式有好多种

 

老男孩²º¹²(283137706)  13:26:05

 

应该是个协议组 SSH

 

菜鸟大kimmking()  13:26:08

 

包括rz sftp

 

飞走了()  13:26:11

 

记得之前用SSH也能选二进制或者什么的

 

菜鸟大kimmking()  13:26:42

 

说实话,我觉得本群里知道http支持下载的断点续传的人,

 

应该不多

 

甚至,几乎没有

 

这是另外一个话题

 

飞走了()  13:27:06

 

我一直以为http不支持断点续传。。

 

菜鸟大kimmking()  13:27:18

 

回来ftp的上传下载断点续传上来。

 

老男孩²º¹²()  13:27:20

 

...这个还是很明显的吧, Chrome下载可以暂停...

 

飞走了()  13:27:34

 

但是ie不行啊

 

菜鸟大kimmking()  13:28:10

 

http协议头里有个range命令,可以告诉服务器,从文件的什么位置开始传输。

 

飞走了()  13:28:15

 

而且可能过一段时间chrome下载也会失败

 

菜鸟大kimmking()  13:28:38

 

如果服务器端的文件是动态生成的,什么端点续传功能都失效

 

飞走了()  13:28:49

 

哦哦

 

菜鸟大kimmking()  13:28:57

 

菜鸟大kimmking()  13:27:17

 

回来ftp的上传下载断点续传上来。

 

ftp创造了端点续传这个功能

 

大概的流程是,

 

菜鸟大kimmking()  13:30:37

 

1、先告诉server,你要从文件的哪个位置,第几个字节开始

 

2、请求此文件的数据

 

上传也大概一样。

 

很简单吧。

 

别小看这个简单的流程。

 

我们可以在自己实现的上传下载工具里改进一下。

 

菜鸟大kimmking()  13:31:42

 

1、主线程,拿到文件的大小。

 

老男孩²º¹²()  13:31:52

 

IE废柴不是一天两天了, 它的断点续传需要一些小技巧才能用

 

据说IE9开始有断点续传了, 没试过

 

菜鸟大kimmking()  13:32:16

 

2、把文件大小除以10,计算每一片的起始文字。

 

飞走了(77606365)  13:32:27

 

起始文字

 

菜鸟大kimmking()  13:32:55

 

3、起10个线程,每个线程从指定的位置请求此文件指定的数据量。

 

10个线程一起跑,拿到数据后,再合并成一个完整的文件。

 

这样,一个多线程的上传下载工具,就出来了。

 

飞走了(77606365)  13:33:47

 

你说的额这个好像flashget的样子

 

菜鸟大kimmking()  13:33:48

 

这才是ftpnb之处。

 

ftp工具,都支持这个功能。

 

飞走了()  13:34:04

 

快车会显示一个点阵图,好像

 

很形象

 

不过好像有的网站把这种功能屏蔽了

 

菜鸟大kimmking()  13:34:47

 

ftp是计算机古代,很简洁而优美的设计。

 

虽然现在也能设计出更多更好的文件操作协议。

 

菜鸟大kimmking()  13:35:52

 

但想再做到ftp的这种简介优美,以及被广泛支持,

 

都是不太可能了。

 

over

 

飞走了()  13:36:32

 

完了?

 

菜鸟大kimmking()  13:36:45

 

没啦

 

命令自己看去

 

rest retr stor

 

我为什么知道这些东西呢

 

因为,我大学的时候自己做过ftp传输工具

 

菜鸟大kimmking()  13:37:52

 

基于tcp,自己实现的ftp协议

 

刚毕业的时候,正好把它用到项目里。

 

基于c++,做成activex,嵌入ie

 

菜鸟大kimmking()  13:38:55

 

实现ftphttp的上传下载的端点续传

 

http的上传,在server端做了一些手脚

 

因为它本身不支持

 

飞走了()  13:39:26

 

server端做手脚

 

 

菜鸟大kimmking()  13:39:44

 

实现的效果是,http的上传,可以达到10M/s

 

菜鸟大kimmking()  13:41:15

 

我学ftp10年前的事儿了

 

我用到项目里,也是06-07年的事儿

 

所以说,真正掌握的知识,

 

是不会忘记的

 

如果忘记了,说明你根本没掌握

 

一千年以后<subin_1921@163.com>  13:41:55

 

server端坐手脚?

 

菜鸟大kimmking()  13:41:59

 

根本没想清楚,搞明白

 

工作QQ()  13:42:02

 

ftp

 

不是有专门的工具

 

菜鸟

 

菜鸟大kimmking()  13:42:15

 

http只支持下载的断点续传

 

工作QQ(827809326)  13:42:17

 

你咋做的

 

菜鸟大kimmking()  13:42:20

 

上传的话,

 

需要自己做个servlet

 

client端多线程发送一片片的文件

 

servlet拿到以后,

 

飞走了(77606365)  13:42:53

 

那其实就相当于反向的下载

 

菜鸟大kimmking()  13:42:58

 

合并成一个完整的文件。

 

yes

 

一千年以后<subin_1921@163.com>  13:43:24

 

这个有实际的用途吗

 

飞走了(77606365)  13:43:39

 

你如果有自己的主站就有用

 

一千年以后<subin_1921@163.com>  13:43:47

 

是使上传加速吗

 

飞走了()  13:43:53

 

上传资源文件,如果特别多特别大就很费劲了

 

工作QQ()  13:44:15

 

tcp

 

飞走了()  13:44:44

 

现在就记得好像是8个层了

 

八月()  13:45:58

 

K神,有开发的有什么框架吗?

 

老男孩²º¹²()  13:46:40

 

八层...

 

老男孩²º¹²()  13:48:16

 

OSI 7 , TCP/IP 4, 哪来的八层

 

五毒|小兵()  13:48:47

 

啥时候能讲讲

 

系统调优不

 

标准自己很难界定,

 

又不知道行业里面的通常标准是什么,

 

一个正常的系统里面压力测试是多少人, 并发是多少人, 吞吐量是多少, 响应时间多少算是合适的啊

 

猪猪狭--哎呀A<>  13:48:56

 

网络好像是7层协议?

 

OSI包括 TCP/IP 4?

 

我也很迷茫()  13:49:40

 

K神的讲座,有人在整理吗

 

老男孩²º¹²()  13:50:36

 

OSI TCP/IP 是两个不同的网络分层模型

 

猪猪狭--哎呀A<lili.135689.qqcom@qq.com>  13:51:14

 

我记得网络7层就包括TCP/IP的四层

 

分享到:
评论
2 楼 peter2009 2013-04-08  
Q 已经屏蔽
1 楼 q179181 2013-04-08  
小兵, 这Q 也不屏下 ?

相关推荐

    subunit-devel-1.4.0-14.el8.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统subunit-devel-1.4.0-14.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf subunit-devel-1.4.0-14.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

    TIA-Portal-V19-HSP.zip

    TIA_Portal_V19_HSP.zip

    自己搭建的无人机跟踪实验,主要讲软件,硬件的需要等等,为初学者提供学习建议及需要学习的内容,讲解使用到的代码等.zip

    自己搭建的无人机跟踪实验,主要讲软件,硬件的需要等等,为初学者提供学习建议及需要学习的内容,讲解使用到的代码等.zip

    stunnel-5.56-5.el8-3.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统stunnel-5.56-5.el8_3.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf stunnel-5.56-5.el8_3.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

    西门子PLC与ABB变频器Modbus通讯实战:参数读写、启停控制及触摸屏集成

    内容概要:本文详细介绍了西门子S7-1200 PLC与ABB ACS510变频器通过Modbus协议进行通讯的方法。首先讲解了硬件连接,包括RS485通讯线的正确接法和终端电阻的使用。接着深入探讨了PLC程序的设计,涵盖Modbus主站的初始化、参数读写(如频率设定、启停控制)、以及错误处理方法。同时,提供了触摸屏(WinCC Basic)的操作指导,包括变量关联、按钮绑定和数据显示。最后给出了常见问题的解决方案,确保通讯稳定可靠。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是需要进行PLC与变频器通讯调试的工作人员。 使用场景及目标:适用于需要将西门子PLC与ABB变频器进行Modbus通讯的应用场合,帮助工程师快速掌握通讯配置、参数设置、启停控制及触摸屏集成的具体步骤,提高工作效率并减少调试时间。 其他说明:文中提供了详细的代码示例和注意事项,有助于读者更好地理解和应用相关技术。此外,强调了硬件检查的重要性,避免因接线问题导致的通讯失败。

    Zwift离线版-Windows端教程

    Zwift离线版-Windows端教程

    2023-04-06-项目笔记 - 第四百五十一阶段 - 4.4.2.449全局变量的作用域-449 -2025.03.28

    2023-04-06-项目笔记-第四百五十一阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.449局变量的作用域_449- 2025-03-28

    十六届蓝桥杯单片机模拟赛资源包.zip

    学习资料:十六届蓝桥杯单片机模拟赛资源包

    机器人控制领域的超轨双光与RIC二光PID程序解析及其应用

    内容概要:本文详细解析了超轨双光PID和RIC二光PID两种开源控制程序的设计思路和实现细节。首先介绍了超轨双光PID程序的核心计算方法,包括PID计算、误差获取以及参数整定等方面的内容。接着探讨了RIC二光PID程序的独特之处,如误差合成、参数自适应和遗忘因子的应用。文中强调了积分项防爆处理、微分项灵敏度提升、传感器布局优化等关键技术点,并提供了调试建议和实践经验。此外,还讨论了增量式PID结构、状态观测器、PWM占空比转换等实用技巧。 适合人群:对机器人控制领域感兴趣的初学者和技术爱好者,尤其是希望深入了解PID控制算法的人群。 使用场景及目标:适用于需要理解和实现PID控制算法的实际工程项目,特别是涉及双光传感器的小车控制系统。目标是帮助读者掌握PID控制的基本原理和高级优化技巧,提高系统的稳定性和响应速度。 其他说明:文中提供的代码片段和调试建议非常实用,建议读者在实践中结合这些内容进行实验和调试,以便更好地理解PID控制的工作机制。

    putty0.80中文设置文件本地目录保存版

    putty0.80CN-X64本地记录

    subunit-1.4.0-14.el8.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统subunit-1.4.0-14.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf subunit-1.4.0-14.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

    基于Matlab/Simulink的IEEE RBTS BUS4电力系统仿真模型构建与故障分析

    内容概要:本文详细介绍了如何利用Matlab 2016a的Simulink工具箱搭建IEEE RBTS BUS4标准电力系统仿真模型。首先,文章讲解了系统的基本结构和主要元件的参数设置方法,如主变压器、母线、输电线路等。其次,针对测量模块的布置进行了指导,确保能够精确获取电压和电流数据。再次,探讨了故障注入的方法及其对系统的影响,包括三相短路故障的设置和效果分析。此外,还讨论了分布式电源(如光伏)的接入方式以及其对系统稳定性的影响。最后,提供了批量仿真和数据采集的一些实用技巧。 适合人群:从事电力系统研究和技术开发的专业人士,尤其是有一定Matlab/Simulink使用经验的研究人员。 使用场景及目标:①帮助研究人员快速掌握IEEE RBTS BUS4标准系统的建模方法;②提供详细的故障注入和分布式电源接入案例,便于理解和应用;③通过具体实例展示如何优化系统性能,提高仿真精度。 其他说明:文中不仅包含了具体的参数设定和代码片段,还有许多实践经验分享,有助于读者更好地理解和运用所学知识进行实际项目开发。

    zhengquan看看看咯

    zhengquan看看看咯

    计算机概论教学课件.pdf

    计算机概论教学课件.pdf

    LanQiaoCup-master-蓝桥杯刷题项目

    LanQiaoCup-master-蓝桥杯刷题项目

    用matlab实现的mpc模型预测控制,用matlab的quadprog函数实现了线性mpc函数双积分控制,倒立摆控制,车辆云动学模型控制,车辆动力学模型控制

    matlab

    单片机设计 基于C语言的单片机红外遥控系统设计与实现的详细项目实例(含完整的硬件电路设计,程序设计、GUI设计和代码详解)

    内容概要:本文档详细介绍了一款基于C语言的单片机红外遥控系统的设计与实现。项目旨在通过单片机平台实现对家电设备的高效、稳定、低成本的红外遥控控制。系统设计涵盖了硬件电路设计、软件架构、信号处理、功耗管理、抗干扰设计等方面。文中详细介绍了各个功能模块的具体实现,包括系统初始化、红外信号接收与解码、控制逻辑、红外信号发射等。此外,文档还探讨了系统的可扩展性,提出了多项创新和技术改进的方向,如多设备控制、语音识别、无线网络控制、自学习功能等。 适合人群:具备一定单片机基础知识的研发人员,特别是对嵌入式系统设计、红外通信技术感兴趣的工程师。 使用场景及目标:①学习单片机与红外遥控技术的基础理论和实际应用;②掌握嵌入式系统设计的方法和技巧,特别是在信号处理、功耗优化等方面的实践经验;③为智能家居、家庭娱乐系统等领域的产品开发提供参考。 其他说明:文档不仅提供了详细的硬件电路设计和软件代码实现,还包括了GUI设计的要求和具体实现步骤。此外,文档还强调了系统的可扩展性和未来改进方向,如集成更多传感器、云平台与大数据分析、机器学习等先进技术,以提升系统的智能化水平。

    5G IPRAN基站业务组网及关键技术解析

    内容概要:本文详细介绍了5G IPRAN(IP Radio Access Network)基站业务组网的技术背景、关键技术和具体配置。主要内容涵盖IPRAN的基本概念及其在5G时代的必要性,新型IPRAN设备的功能改进和支持的新技术(如SR、FlexE等),以及具体的组网架构和技术细节,包括但不限于DCN自通、PW+L3VPN组网、FlexE配置、Telemetry技术、Segment Routing、EVPN实现方式、MPLS OAM等。此外,文章还深入探讨了IPRAN基站的流量走向、高可靠性和配置要点,特别是A设备、B设备和ER设备的具体配置步骤。 适合人群:具备一定网络工程基础的专业人士,尤其是从事5G网络建设和维护的技术人员。 使用场景及目标:帮助技术人员理解和实施5G IPRAN基站业务组网,确保网络架构的高效性和稳定性,满足5G网络大带宽、低延迟的要求。 其他说明:本文不仅提供了理论知识,还附带了大量的配置示例,便于读者在实践中应用。

    MATLAB/Simulink中永磁同步电机启动与运行模式切换的方案设计(I/F控制、滑模观测器控制)

    内容概要:本文详细介绍了如何利用MATLAB/Simulink实现永磁同步电机(PMSM)从启动到中高速运行的平滑切换。主要内容分为三个部分:首先是I/F控制用于启动阶段,确保电机平稳启动;其次是滑模观测器(SMO)和磁链观测器的应用,用于中高速运行时的状态估计和控制;最后是模式切换的设计,通过状态机和加权平均方法实现两种控制模式之间的无缝衔接。文中提供了具体的MATLAB代码片段和Simulink模块配置,强调了调试技巧和注意事项,如频率斜坡生成、电流补偿、滤波器应用以及速率限制等。 适合人群:对永磁同步电机控制有一定了解的研究人员和技术人员,特别是那些希望深入理解MATLAB/Simulink在电机控制系统中应用的人群。 使用场景及目标:适用于需要设计高效、稳定的PMSM控制系统的研究项目或工业应用。主要目标是掌握I/F控制、滑模观测器和模式切换的具体实现方法,提高系统的动态响应和平稳性。 其他说明:文章不仅提供理论指导,还分享了许多实用的调试经验和优化技巧,帮助读者更好地理解和解决实际工程中的问题。

    MATLAB模糊控制算法在驾驶员制动意图识别中的应用:模型与实验案例

    内容概要:本文详细介绍了如何利用MATLAB的Fuzzy工具箱实现驾驶员制动意图的识别。文中首先解释了模糊控制的基本概念及其在处理不确定性和模糊性方面的优势。随后展示了具体的MATLAB代码示例,包括创建模糊推理系统(FIS)、定义输入输出变量及其隶属函数、添加规则以及进行仿真测试。通过实际路测验证,模糊控制相比传统方法在识别精度和响应速度上有显著提高。此外,还讨论了参数调整技巧和常见问题解决方案。 适合人群:从事自动驾驶或智能辅助驾驶系统研究的技术人员,尤其是对模糊控制算法感兴趣的开发者。 使用场景及目标:适用于需要精确识别驾驶员制动意图的应用场合,如高级驾驶辅助系统(ADAS)的研发。主要目标是提高系统的智能化水平,增强行车安全性。 其他说明:文中提供的代码片段和实验数据有助于读者深入理解模糊控制的工作原理,并为实际项目提供参考。同时强调了模糊控制并非万能,需要结合具体应用场景不断优化调整。

Global site tag (gtag.js) - Google Analytics