TCP协议学习记录 (二) Ping程序】的更多相关文章

简单的实现了一个ping程序,没有做icmp差错报文的检查. 支持自定义字节数,支持发包个数 #pragma pack(4) #define ECHO_REQUEST 8 #define DATASIZE 65500 #define PACKETSIZE 65535 struct iphdr { unsigned ; //包头长度 unsigned ; //版本 unsigned char ip_tos; unsigned short ip_length; //总长度 unsigned shor…
一开始想直接在上个程序改,自己构造IP包头,但后来发现不行,微软不让干了,所以后来选用libcap库来收发包 代码写的很乱.. #pragma pack(4) #define ECHO_REQUEST 8 #define DATASIZE 65500 #define PACKETSIZE 65535 #define IPCOUNT 9 #define MACSIZE 6 #define OPTION_RR 7 struct ethhdr { char mac_dst[MACSIZE]; char…
程序只实现了获取时间戳,至于将时间戳转换成具体日期和时间,暂时没有好的办法. #define TIME_STAMP_REQUEST 13 struct iphdr { unsigned ; //包头长度 unsigned ; //版本 unsigned char ip_tos; unsigned short ip_length; //总长度 unsigned short ip_identify;//标识 unsigned short ip_offset;//片偏移 unsigned char i…
TCP/IP协议学习之实例ping命令学习笔记(一) 一. 目的为了让网络协议学习更有效果,在真实网络上进行ping命令前相关知识的学习,暂时不管DNS,在内网中,进行2台主机间的ping命令的整个详细过程的深入研究.包括的知识点有:ping,ICMP,IP,协议系统,ARP.包含的章节有第1,3,4,6,7章. 二. 实践环境1. 网络环境2. 协议分析工具Ethereal工具.在本机上安装并进行抓包观察.三. 工具设置由于Ethereal工具在进行网络监视时,会抓取来自其他机器的数据包,为了…
[网络编程之Socket套接字介绍,套接字工作流程,基于TCP协议的套接字程序] 为何学习socket套接字一定要先学习互联网协议: 1.首先:要想开发一款自己的C/S架构软件,就必须掌握socket编程 2.其次:C/S架构的软件(软件属于应用层)是基于网络进行通信的 3.然后:网络的核心即一堆协议,协议即标准,你想开发一款基于网络通信的软件,就必须遵循这些标准. socket层 从上图中,我们没有看到socket的影子,它在哪里呢?用图说话一目了然 socket套接字是什么 Socket是应…
Material Calendar View 学习记录(二) github link: material-calendarview; 在学习记录一中简单翻译了该开源项目的README.md文档.接下来开始阅读源码. 代码浏览 源码中分成三个部分:日期的格式化,自定义的span效果,以及日历控件的实现.其中最重要也最复杂的部分就是日历控件的实现.我先从简单的看起,即日期格式化. format包 format包中有八个java文件,其中有三个接口,五个实现类. 三个接口: DayFormatter…
==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/details/52185345 --关于springboot的 springboot - 蜕变之路 - CSDN博客http://blog.csdn.net/u012706811/article/category/6357760 自从来公司后都没用过jsp当界面渲染了,因为前后端分离不是很好,反而模板引…
title: JavaScript学习记录二 toc: true date: 2018-09-13 10:14:53 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅MDN Web 文档 变量.作用域和内存问题 基本类型和引用类型的值 ECMAScript变量可能包含两种不同数据类型的值: 基本类型值:保存在栈内存中的简单数据段,这种值完全保存在内存中的一个位置 引用类型值:保存在堆内存中的对象,保存的实际上是一个指针,指针指向内存中真正对象保存的位置 五种基本数据类型:U…
VUE前端框架学习记录二:Vue核心基础2(完结)文字信息没办法描述清楚,主要看编码实战里面,有附带有一个完整可用的Html页面,有需要的同学到脑图里面自取.脑图地址http://naotu.baidu.com/file/a04d64f8804b39926fcd483894cfbca8?token=52f9a39bc3bee135…
概述 之前网络学习笔记主要讲解了IP的诞生,或者说整个操作系统的诞生,一旦有了IP,就可以在网络的环境里和其他的机器展开沟通了.现在开始给大家讲解关于网络底层的相关知识. 从物理层到MAC层:如何在宿舍里自己组网玩联机游戏? 在买路由器还是很奢侈的时候,如果一个大学宿舍想联网打游戏,他们改怎么办呢?带这个问题我们进行学习本节课的知识. 第一层(物理层) 使用路由器,是在第三层上.我们先从第一层物理层开始说.物理层能折腾啥?现在的同学可能想不到,我们当时去学校配电脑的地方买网线,卖网线的师傅都会问…
在计算机领域,数据的本质无非0和1,创造0和1的固然伟大,但真正百花齐放的还是基于0和1之上的各种层次之间的组合(数据结构)所带给我们人类各种各样的可能性.例如TCP协议,我们的生活无不无时无刻的站在TCP协议这个“巨人”的肩膀上,最简单的一个打开手机的动作.所以对TCP的认识和理解,可谓越来越常识化. TCP/IP五层协议 虽然TCP是一种计算机网络协议,但本质还是人与人之间的一种约定,只不过由计算机去执行而已,把协议的细节与作用解耦,让我们人类只需专注于基于它的应用呈现之上即可.协议即“规则…
很多人都说TCP协议是一个十分复杂的协议,在学习当中,我对协议每一个问题都分解学习后,每一个分解我都能体会和理解它的要点,并不难理解.但我把这些拆分的细节合并后,确认感觉这样一个协议相对“臃肿”但又好像不得不这样做的感觉.也写过那么多年代码,我也十分理解这种“分布”和“一致”的协调,就好像CAP理论一样,更关键的是许多的CAP选择都是依赖于TCP这样可靠的协议之上,可想而知它“可靠性”的重中之中,我也看到了根基扎实稳重的重要性.当然技术还在不断进步,协议的完善和优化从没有停止,无论如何,学习还得…
TCP协议数据格式 TCP协议在互联网ISO协议的传输层. 在互联网传输过程中,互联网包在数据链路层,是传输数据的最基础的包.一个互联网的包包含IP包,即互联网包 = 互联网信息包头(至少20字节)+IP包(1480字节) = 数据包1500字节 IP包是跨局域网传输需要路由的包,是处于网络层的包.一个IP包包含一个TCP或UDP的包,即IP包 = IP包头(至少20个字节)+TCP包(1460字节)= 数据包1480字节 TCP包是传输到指定端口的包,每个端口都表示不同的应用协议服务,TCP协…
原文链接:blog.csdn.net 用这个媒体播放器组件,实时互动时也可共同观看本地视频juejin.im 前言 计算机网络基础 该是程序猿需掌握的知识,但往往会被忽略 今天,我将详细讲解计算机网络中最重要的TCP协议,含其特点.三次握手.四次挥手.无差错传输等知识,希望你们会喜欢. 阅读本文前,请先了解计算机网络基础知识:献上一份全面 & 详细的计算机网络基础 学习指南 目录 1. 定义 Transmission Control Protocol,即 传输控制协议 属于 传输层通信协议 基于…
一.TCP参考模型  VS OSI参考模型 二.TCP/IP分层模型的四个协议层分别完成以下的功能 第一层 网络接口层 网络接口层包括用于协作IP数据在已有网络介质上传输的协议.实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能.相反,它定义像地址解析协议(Address Resolution Protocol,ARP)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口. 第二层 网间层 网间层对应于OSI七层参考模型的网络层.本层包含IP协议.RIP协议(Ro…
TCP协议是一种面向连接的.可靠的流协议. 流即不间断的数据结构.这样能够保证接收到数据顺序与发送相同.但是犹如数据间没有间隔,因此在TCP通信中,发送端应用可以在自己所要发送的消息中设置一个标示长度或间隔的字段信息. 由于TCP为应用提供可靠传输,所以需要对数据传输时数据破坏.丢包.重复以及乱序问题有充分的控制能力.同时TCP协议作为面向连接的协议,只有确认对端存在才会发送数据. TCP通过检验和.序列号.确认应答.重发控制.连接管理.窗口控制等实现可靠传输. 当传输层采用TCP协议进行通信时…
要求: 基于TCP协议实现一个聊天程序,客户端发送一条数据,服务器端发送一条数据 客户端代码: package Homework1; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import…
1.TCP协议通过三次握手建连接,四次挥手断连接. 2.TCP的定时器都有哪些? 做什么用途? 3.TCP的慢启动是什么意思? 4.TCP的快速重传是什么意思?…
在前两边TCP学习总结中,也大概地学习了TCP的整个流程,但许多细节中的细节并没有详细学习,例如超时重传问题,每次瓶颈回归慢启动效率问题以及最大窗口限制问题等.本学习篇章最要针对这些细节中的细节进行学习.TCP的复杂很多时候就是细节太多了,需要考虑许多的场景并利用许多复杂的算法和启动异步线程定时处理这些问题,对于每一个连接,TCP管理4个不同的定时器,分别是: 1).重传定时器使用于当希望收到另一端的确认: 2).坚持定(persist)时器使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口…
问题描述:由于最近项目需要使用Mac地址与注册码进行加密处理,但是又因为Web程序的局限性不能获取客户端电脑系统信息,当然IE浏览器有一个activex控件他是可以通过Js在前端代码中直接获取的,局限性太小放弃.我的实现方法是通过windows服务嵌套一个HttpService服务实现.本人初级菜鸟希望有大佬看到能有多多指教,同时也记录下来加深自己的印象.大概实现步骤如下 一 创建一个winform项目 二 在根目录下创建一个windowsService服务名称随意,本文中取得是Service1…
一.传统连接数据库和执行sql的不足 1.数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能. 设想:使用数据库连接池管理数据库连接. 2.将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护. 设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译. 3.向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,…
更多细节请参看MCAN2文档mcan2_ps.pdf. 一.MCAN2简介 MCAN2是Mentor公司开发的一个CAN2.0网络控制器的软核,初版2001年末版2006年.MCAN 2控制器实现了BOSCAN消息传输协议2.0a和2.0b.规范2.0a(相当于can 1.2)涵盖标准消息格式(11位标识符):规范2.0b涵盖标准和扩展消息格式(11位和29位标识符). 二.总体架构 下图显示了MCAN2设计的主要功能块. CPU对mcan 2的访问是通过独立的地址.输入数据和输出数据总线进行的…
章节介绍 本章节主要学习 Java SE 1.6 中为了减少获得锁 和 释放锁 时带来的性能消耗 而引入的偏向锁 和 轻量级锁,以及锁的存储结构 和 升级过程. synchronized实现同步的基础: Java中的每个对象都可以作为锁.具体有三种形式: (1)对于普通同步方法,锁是当前实例对象: (2)对于静态同步方法,锁是当前类的Class对象: (3)对于同步方法快,锁是Synchronized括号中配置的对象. 当一个线程试图访问同步代码块时,它首先必须得到锁,退出或者抛出异常时必须释放…
什么是HTTP基本认证 桌面应用程序也通过HTTP协议跟Web服务器交互, 桌面应用程序一般不会使用cookie, 而是把 "用户名+冒号+密码"用BASE64编码的字符串放在http request 中的header Authorization中发送给服务端, 这种方式叫HTTP基本认证(Basic Authentication) 当浏览器访问使用基本认证的网站的时候, 浏览器会提示你输入用户名和密码,如下图 假如用户名密码错误的话, 服务器会返回401 如下图 HTTP基本认证的过…
从最简单的HelloWorld开始入手,这是一个最低限度的C#程序结构. C# Hello World 示例 一个C#程序主要由以下几部分组成: 命名空间声明 一个类 类方法 类属性 一个Main方法 语句和表达式 注释 先看看下面的示例,将打印字的简单的代码 "Hello World": using System; namespace HelloWorldApplication { class HelloWorld { static void Main(string[] args)…
参考资料: http://bucephalus.org/text/CanvasHandbook/CanvasHandbook.html#getcontext2d https://developer.mozilla.org/zh-CN/docs/Web/HTML/Canvas http://www.w3school.com.cn/html5/html5_canvas.asp https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLCanvasEle…
前提:搭建成功codefirst相关代码,参见EF Codefirst  初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少主键 3.将实体类库设置为"设为启动项目"(非必须,建议) 操作步骤: 一.添加数据库迁移命令 Add-Migration AddInstrument(此次更新名称,自定义) 二.添加成功后,更新到数据库 Update-Database -Verbose完成.其他错误和需要注意的地方,以后…
一,目录结构 HTTP Cookie & Session HTTP Cache (缓存) 二,HTTP Cookie & Session 1. 我们看到的 cookie 我们通过浏览器随意打开一个网站,比如网址为https://www.cnblogs.com/.在 chrome 浏览器中打开这个网站,进入开发者模式,点击Resources栏 -> 选择cookies,我们会看到如下图所示的界面: 解释一下:左边栏Cookies下方会列举当前网页中设置过cookie的域都有哪些.上图中…
ASP.NET Core 中间件 目录: 什么是中间件 ? IApplicationBuilder 使用 IApplicationBuilder 创建中间件 Run.Map 与 Use 方法 实战中间件 参考原文 我们知道在 ASP.NET 中,有一个面向切面的请求管道,由22个主要的事件构成,能够让我们在往预定的执行顺序里面添加自己的处理逻辑.一般采取两种方式:一种是直接在 Global.asax 中对应的方法中直接添加代码.一种是是在 web.config 中通过注册 HttpModule…
/************************************************************** 技术博客 http://www.cnblogs.com/itdef/   技术交流群 群号码:324164944   欢迎c c++ windows驱动爱好者 服务器程序员沟通交流 **************************************************************/   zeromq 指南里第二个例子是天气更新服务器 socke…