首页
学习
活动
专区
工具
TVP
发布

Coding迪斯尼

专栏作者
322
文章
267905
阅读量
97
订阅数
从0到1用java再造tcpip协议栈:代码实现ping应用功能1
上一节我们讲解了基于ICMP echo协议的ping原理,并提出下图的代码实现架构:
望月从良
2022-01-17
3660
高级静态分析技能基础:X86架构的堆栈结构描述
在代码运行时需要临时存放各种信息,例如函数调用时的输入参数,局部变量等,这些信息存储在一种叫做”栈“的数据结构上。它的特点是后进先出,也就是最后存储到栈里面的数据将会最先被取出来。X86体系自带栈结构,寄存器ESP,EBP专门用于对栈进行操作。EBP指向栈所在的内存地址,ES[图片上传中…(截屏2020-09-30 下午3.56.59.png-a3f002-1601452956326-0)] P指向数据进入或弹出堆栈所在的位置,同时对于栈操作的指令有push,pop,call,leave,enter,ret等。
望月从良
2020-10-26
7430
使用java实现HTTP的GET请求
在前几节我们详细讲解了http协议的相关信息,基于“知行合一”的原则,只有通过具体动手实践才有可能检验知识点被我们真正掌握,本节我们就使用代码实现http的get请求。
望月从良
2020-05-22
1.5K0
详解TCP的重置功能和实现连接结束功能
上一节我们完成了TCP三次握手原则,当双方通过三次握手交换了各自用于传递信息的参数后,双方进入数据分发模式,在TCP协议上说双方都进入了ESTABLISHED状态。基于早期质量低下的数据传输网络,连接建立只不过是开始,在通讯过程中保持稳定和通畅是TCP协议的重要内容。
望月从良
2019-09-18
1.4K0
TCP协议数据传输的基本机制:滑动窗口运行过程详解
TCP协议为了尽可能保证数据传输的可靠性,因此数据的传输过程就比较复杂和繁琐。TCP为了保证数据传输速率,它需要一次尽可能多的传送数据,但数据一次发送太多出错的可能性也大,因此TCP通过一套机制来动态调整每次数据的发送量,这套机制就是我们前面提到过的滑动窗口。同时在上一节中,我们构造TCP数据包头时需要设置一个option叫maximun segment size,这个数据结构决定了无论当前滑动窗口有多大,一次数据发送量都不能超过它给定的范围。
望月从良
2019-08-23
8980
代码实现TCP三次握手:程序实现
本节我们通过代码来实现TCP协议连接时的三次握手过程。首先我们需要再次重温一下TCP数据包的相关结构:
望月从良
2019-08-20
9530
代码实现TCP三次握手:基本数据结构说明
从本节开始,我们用代码实现TCP的三次握手流程,首先我们通过wireshark抓包,看看相关数据包的基本机构。首先打开wireshark,然后用浏览器打开一个网页,接着在wireshark过滤框输入:tcp.port==80,这时我们会把http协议发送的数据包过滤出来,从中就可以看到三次握手对应的数据包,如下图所示:
望月从良
2019-07-29
5780
数据传输的主心骨,传输控制协议TCP:TCP基本概念和滑动窗口机制介绍
我们在前面章节中描述了很多网络协议,它们共同的一个特点是居于UDP进行数据发送。在代码实现过程中我们发现,UDP包头非常简单,重要的就是有个端口,同时UDP协议的责任也简单,目的是标明数据包的归属,至于数据包能否正确发生给对方,它毫不关心。
望月从良
2019-07-01
6860
java构建TCP/IP协议:DNS,域名解析协议系统的运行流程
DNS协议的运转需要客户端和服务器进行交互。由于服务器端需要存储大量的域名信息,同时每天需要应答海量的解析请求,因此它的设计必须遵循分布式系统。客户端向一台服务器请求解析服务时,对方可能没有相应的域名信息,于是它会向上一层查询,获得拥有给定域名信息的服务器,然后把对应服务器的信息归还给客户端,然后客户端再重新发起请求。
望月从良
2019-05-10
3.2K0
DHCP,代码实现主机动态配置协议IP请求,应答以及更新
我们在上一节中完成了客户端请求和服务器应答的第一个步骤。客户端发出DHCP_DISCOVER消息,局域网内的所有DHCP服务器发出DHCP_OFFER消息,在该消息中包含一个特殊字段叫Your_IP_Address,这是服务器分配给客户端的IP地址,如下图:
望月从良
2019-04-28
8720
从0到1用java再造tcpip协议栈:ICMP协议的原理和实现
绝大多数TCPIP传输协议基于IP寻址协议,然后建造在IP之上的TCP和UDP两种协议用于控制数据包的传输。问题在于这些协议只关注数据传输,在传输过程中如果出现错误信息,或者是网络出现某种异常情况需要数据发送双方做一些控制操作时,我们就需要在这些协议的控制范围之外传递一些有关数据发送的控制信息,这些数据的发送就必须依赖于控制数据报协议,也就是ICMP协议。
望月从良
2019-01-03
1.4K0
从0到1用java再造tcpip协议栈:使用jpacap模拟数据链路层
我们上一节成功使用jpcap获得了网卡硬件,我们要重新构造tcp/ip协议栈,那么就需要做两部分工作。一部分由上层协议完成,他们的工作是将要发送的数据进行封装,主要是在数据包上添加包头数据结构,包头里有很多控制字节,用于不同节点间进行数据传送时对传送过程的控制和调整,了解,掌握,实现每层数据协议的包头结构以及数据控制流程是我们系列课程的重点和难点。
望月从良
2018-12-20
1.3K0
使用java自造TCP/IP协议栈:使用JPCAP实现数据发包
从本节开始,我们打算使用java把tcp/ip网络协议栈重新实现一遍。这是一个不小的野心,自然也是一个不小的工程,好在前面顺利完成了操作系统,编译器两门课程的实现,这给了我极大的信心。整个互联网系统分为三大支柱,分别是操作系统,编译器,和网络协议,我们完成了前面三者,还剩第三者一直孤悬在那,直到今天我终于下定决心,尝试着把tcp/ip协议栈也重新实现一遍。
望月从良
2018-12-20
2.2K0
没有更多了
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档