
TCP/IP
IT1995
每周个人笔记分享,欢迎广大网友查阅!
展开
-
Lifewire文档阅读笔记-如何使用IP地址找对应的MAC地址
逻辑:①使用ping命令,ping相关的IP地址。②使用arp命令,查看刚刚ping的ip地址对应的mac地址。在Windows、Linux和其他操作系统中,可以输入arp(Address Resolution Protocol)打印当前机器下存储的ARP缓存。要注意,这个协议只能查到本地局域网(LAN)中的MAC地址的缓存,互联网上的是找不到的。arp命令只有系统管理员才能使用,并且不能用来追踪互联网的的计算机。在TCP/IP模型中,使用IP地址和MAC地址定位主机,但IP原创 2022-03-25 09:05:28 · 4488 阅读 · 3 评论 -
HTTP笔记-浏览器是如何识别点击的链接是下载文件还是展示页面
使用Fiddler的断点功能可以很好的观察这一现象。当鼠标点击一个URL下载数据时,回的数据包是这样的:其中最关键的回包是Content-Type: application/msword,这个msword全称是Microsoft Word,当使用Fiddler断点功能设置After Responses将Content-Type: application/msword改为Content-Type: text/html浏览器就识别不了了。就直接把这些数据打印到页面上了,.原创 2021-12-21 08:49:51 · 1765 阅读 · 0 评论 -
HTTPS|SSL笔记-SSL分手过程(Encrypted Alert)
目前在做一个多线程Restful风格的Web服务器。以前只分析了握手过程,今天来看下分手过程。服务端端口:18888客户端端口:53532框起来的那个是SSL分手的2个包,后面4个是TCP分手的包。来看下Encrypted Alert代码里面是,服务端发完数据后,提交分手服务端发送Encrypted Alert,告知客户端要断开连接了,你要准备好。然后客户端就回复ACK。最后就是TCP三次分手。...原创 2021-10-12 08:47:24 · 18731 阅读 · 3 评论 -
HTTPS|SSL笔记-SSL双向认证失败(服务端证书信任库不含客户端证书)握手过程(含wireshark分析)
这里我把服务端信任库添加了其他证书,不含客户端的证书,这时SSL认证失败报错如下。下面来分析下:1. 首先是TCP三次握手,对应的包如下:2.握手成功后,客户端发送自己支持的加密套,和随机数给服务端,也就是Client Hello对应的是这个:具体内容如下:其中Random为随机数、Cipher Suites为加密套及signature_algorithms为签名算法。4. 服务端收到后回复ACK,对应的包如下:5.服务端发送自己的...原创 2021-09-07 08:41:30 · 1789 阅读 · 1 评论 -
网络协议文档阅读笔记-Introduction to DTLS(Datagram Transport Layer Security)
在互联网中安全的数据传输是至关重要的。很多敏感数据都通过互联网交互数据如金融交易数据,医药数据,媒体流数据等。SSL/TLS和IPSec就是为了确保互联网中传输数据的安全而创建的。许多网站使用的是SSL/TLS。DTLS也是传输层的的一个安全协议。What is DTLSDTLS是传输层协议,用于加密传输的数据,是基于UDP的。DTLS与TLS很相似,在RFC4347和RFC6347中有定义。Why DTLSSSL/TLS在TCP协议上的加密协议,TCP他是安全可靠不会丢失数据的..原创 2021-06-08 08:45:03 · 842 阅读 · 0 评论 -
网络协议文档阅读笔记-TLS vs DTLS | Difference between TLS and DTLS
TLS是工作在除应用层协议外最顶层的协议。也就是传输层协议,这个协议,在有些文档中称为应用层的子协议。DTLS与TLS区别就在那个D,也就是DatagramTLS协议原创 2021-06-08 08:43:05 · 1458 阅读 · 0 评论 -
TCP/IP文档阅读笔记-TCP Receive Window
TCP Receive WindowTCP接收窗口,TCP接收数据到缓冲,应用程序还未处理的那块数据。TCP Receive Window大小,在TCP三次握手时就已经商量好了。并且还确定了数据包的最大字节数。这个最大字节数被称为最大消息长度(Maximum Segment Size,MSS)。当要发送的数据超过该值,就需要将数据分为多个包,依次发送,该操作称为数据分片,如下:如上TCP上次握手时,商量了MSS为1460.过程如下:上面的例图中,Win为windows是窗口大小,原创 2021-02-15 10:16:51 · 1357 阅读 · 0 评论 -
Wireshark文档阅读笔记-User Datagram Protocol(UDP)
UDP(User Datagram Protocol):用户数据协议,UDP是无状态的传输。UDP没有提供任何检测机制,检测丢包,重复包,的功能。基于UDP的协议有BOOTP,DNS,NTP,SNMP,...UDP使用IP协议作文底层协议。下面来用Wireshark抓下包。如下C++代码:#include <QCoreApplication>#include <QUdpSocket>#include <QNetworkDatagram>.原创 2021-02-15 10:13:19 · 1081 阅读 · 0 评论 -
Wireshark笔记-ping,arp相关的实验(2台主机是否能通)
这是一个实验,两台主机的arp都是空的。主机A的IP地址:192.168.1.3 子网掩码:255.255.255.0主机B的IP地址:192.168.1.193 子网掩码:255.255.255.224网关都是192.168.1.1现在使用B去pingA,包是这样的:B(192.168.1.193)pingA(192.168.1.3),因为B的子网掩码是255.255.224,B主机认为A是在不同的网段中,所以先去找网关,找网关就需要其mac地址,才能通信,所以先发了个arp.原创 2021-02-11 23:09:10 · 2072 阅读 · 0 评论 -
Wireshark文档阅读笔记-TCP Flags
TCP flags是什么?TCP flags存在于TCP数据包中,这个标志位暗示连接状态和一些额外的信息。这个标志位常用于故障诊断或是控制某种特定的连接下面介绍了TCP flags如:SYN、ACK、FIN。List of TCP flags每一个TCP flag的大小都是1bit。下面将介绍每一个标志位:SYN:同步标志位,用于2台主机要建立连接时,第一次发出的数据包,在TCP三次握手中,前两次握手会带有SYN标志位,如上图的TCP三次握手。ACK:确认位,用于说明前对方...原创 2021-01-27 19:34:31 · 3385 阅读 · 0 评论 -
Wireshark文档阅读笔记-TCP 4 times close解析与实例
先介绍一个知识点:当TCP最后一次握手结束后,也就是客户端发送ACK后,客户端不会立即释放资源。会先将状态转换为TIME-WAIT然后等到2-MSL(Maximum Segment Lifetime)后,才会释放资源。1. 客户端发送结束(FIN)数据包给服务端,暗示客户端将要把建立的连接断开,这样的行为称为active close(FIN=1, seq=u)。2. 服务端发送确认收到FIN的数据包(ACK=1, seq=v, ack=u+1)。3. 服务端继续发送结束(FIN)数据包给原创 2021-01-26 22:11:20 · 510 阅读 · 0 评论 -
Wireshark文档阅读笔记-TCP 3 way handshaking解析与实例
这里先介绍2个概念:TCB:Transmission Control Block,传输控制块,这个和PCB(进程控制块)类似,存储了很多重要的内容。如TCP连接表,发送缓存指针和接收缓存指针,重发队列指针,当前序列号和确认序列号(ACK)。ACK包中带有“数据”,这个数据是指处理SYN(Synchronize Sequence Numbers同步序列号),确认包序列为seq=x+1,这个x是客户端或服务器传过来的。但在实际TCP3次握手中,不仅仅包含这些东西,还带有商议的内容如MSS(maximum原创 2021-01-26 20:40:32 · 695 阅读 · 0 评论 -
TCP/IP笔记-Qt使用Win10pcap发送以太帧(理论与实践)
首先来介绍下以太帧理论:以太帧是包含MAC帧的,先看下MAC帧:目的地址:接收帧的网络适配器的物理地址(MAC地址);源地址:发送帧的网络适配器的物理地址(MAC地址);类型:上层协议的类型。在处理数据时必须设置该字段,表示数据交付给哪个协议处理,如0x0800,表示交付给IP协议。数据:表示交付给上一层的数据,以太帧最小为46字节,最大为15000,不足46字节会自动填充...原创 2020-04-28 10:56:11 · 3362 阅读 · 0 评论 -
Qt笔记-添加Win10Pcap库获取网络适配器(MinGW编译器)
最新在撸一本关于TCP/IP的书,因为理论要结合实际,不然对我这种搞工程的人作用不大。在此准备使用Win10Pcap,尽可能的模拟书上的内容。使用这个库有如下过程:首先安装win10pcap然后在pro文件中设置好对应的库和lib。下面是官方的查网络适配器的代码,我这里稍微改了下。当前计算机网络适配器信息:程序运行截图:相关源码如下:pro...原创 2020-04-27 14:02:50 · 3417 阅读 · 0 评论 -
TCP/IP笔记-ARP协议包结构相关笔记
地址解析协议(Address Resolution Protocol,ARP):通过IP地址获取MAC地址,用于解决网络层和链路层衔接问题。同一局域网的一台主机要和另外一台主机要通信,需要通过MAC地址定位。在网络层和传输层中,计算机是通过IP地址定位的。ARP基本流程图:这里要注意:每个计算器中都有ARP缓存,使用:arp -a如下:下面是ARP协议...原创 2020-04-24 13:51:37 · 3628 阅读 · 3 评论 -
Java Socket笔记-利用tcp socket搭建CS模型
目录基本概念代码与实例基本概念这里采用的是TCP模型,只说明一点,在Java中有import java.net.Socket;这个包中TCP的用法个人觉得和QTcpSocket差不多(个人觉得QTcpSocket好用点,可能是自己习惯问题)这里用控制台输入,输出可以采用这样的方式!首先构造一个输入流:InputStream in = System...原创 2019-09-04 10:52:24 · 4619 阅读 · 0 评论 -
Qt|设计模式工作笔记-对单例模式进一步的理解(静态加单例实现专门收发UDP对象)
目录 理论源码理论这里只说明一点,使用单例模式,私有成员里放一个成员,这个成员是一个静态成员,把构造函数都屏蔽掉(放到protected或者private中即可)使用一个flag,让其只能生成一次,因为是静态的成员,所以在各个.cpp文件里面都可以用,这样就实现了单例模式的内容,今天刚刚体会到这种功能,仿写了出这样的一套代码!源码程序结构如下图所示:Qt运行截图...原创 2019-01-03 10:39:06 · 4694 阅读 · 4 评论 -
Qt工作笔记-UDP多线程数据处理及发送(简单实例)
目录 逻辑与运行源码逻辑与运行程序逻辑图如下: 接收端运行截图如下:客户端接收数据如下:客户端用的是串口调试工具: 源码程序结构如下:源码如下:data.h#ifndef DATA_H#define DATA_H#include <QObject>#include <QHostAddress&g...原创 2019-01-01 13:45:20 · 16492 阅读 · 7 评论 -
Qt学习笔记-服务器端获取UDP封包源IP地址
目录 简介源码简介本篇博文修改于: Qt文档阅读笔记-QUdpSocket基本表述及简单实现https://blog.youkuaiyun.com/qq78442761/article/details/85258574 原理请看上面的博文 获取源IP地址的原理:在槽函数中进行获取,记住这种逻辑,很重要,因为Socket里面有个函数叫peerAddr这个不会获...原创 2018-12-30 09:32:47 · 6825 阅读 · 3 评论 -
ICMP报文分析(转)
ICMP报文分析(转)转载 2017-01-05 03:48:30 · 5635 阅读 · 0 评论 -
C/C++轻松写基于UDP的远程控制
C/C++轻松写基于UDP的远程控制原创 2017-01-24 00:20:58 · 17660 阅读 · 22 评论 -
C/C++之大端小端
C/C++之大端小端原创 2017-03-10 22:21:12 · 10175 阅读 · 4 评论 -
专业课程设计之客户与服务器程序的同步与通信机制的设计(一)项目介绍
专业课程设计之客户与服务器程序的同步与通信机制的设计(一)项目介绍原创 2017-05-31 12:34:23 · 8716 阅读 · 1 评论 -
专业课程设计之客户与服务器程序的同步与通信机制的设计(二)TCP通信
专业课程设计之客户与服务器程序的同步与通信机制的设计(二)TCP通信原创 2017-05-31 13:09:04 · 5779 阅读 · 2 评论 -
专业课程设计之客户与服务器程序的同步与通信机制的设计(三)数据共享和线程
专业课程设计之客户与服务器程序的同步与通信机制的设计(三)数据共享和线程原创 2017-05-31 13:26:36 · 5235 阅读 · 2 评论 -
Listen第二个参数的意义
Listen第二个参数的意义转载 2017-06-08 14:39:01 · 6874 阅读 · 2 评论 -
Wireshark工作笔记-TCP的状态解析,以及建立连接与关闭连接
在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.其中,对于我们日常的分析有用的就是前面的五个字段。 它们的含义是:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有 DATA数据传输,RST表示连接重置。 其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应...转载 2018-05-17 09:17:02 · 6429 阅读 · 1 评论 -
Wireshark工作笔记-对TCP连接与断开以及数据传输的实战分析
首先要使用一个TCP/UDP Socket调试工具。本次使用虚拟机NAT模式,主机IP地址为192.168.164.1,此时主机的/UDP Socket调试工具配置如下:虚拟机采用Win7 IP地址为192.168.164.101,其TCP/UDP Soceked调试工具配置如下:在Wireshark过滤器里面输入过滤命令,就能对获取的数据包进行过滤命令如下:ip.addr==192.168.16...原创 2018-05-17 16:12:24 · 5573 阅读 · 0 评论 -
套接字中缓冲区
原博文地址:https://www.cnblogs.com/justkong/p/7657363.html套接字中缓冲区1、MTU(Maximum Transmission Unit)最大传输单元,在数据链路层中,往往规定了MTU大小,IP层的数据包通过数据链路层如果大于MTU,将被分片,到达接收端IP层后再被重组。以太网的MTU为1500字节。2、MSS(Maximum Segment Size...转载 2018-06-05 09:41:14 · 5584 阅读 · 2 评论 -
TCP/IP学习笔记-Qt中的ReuseAddressHint以及SO_REUSEADDR,以为组播常用场景分析
最近在看一个局域网聊天的源码(Qt做的)发现大佬用了这样的代码:udpSocket->bind(port, QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);根据文档可以知道这个ShareAddress,允许其他的服务(进程)去绑定这个IP和端口,而这个ReuseAddressHint为失败后立即使用他与SO_REUSEADDR...原创 2018-06-10 00:14:58 · 10354 阅读 · 1 评论 -
Qt文档阅读笔记-QUdpSocket基本表述及简单实现
目录 官方描述博主例子官方描述具体总结如下(Detailed Description中):1.UDP是轻量级,不可靠的传输协议!2.QUdpSocket是QAbstractSocket的子类,可以收发数!3.bind()用于绑定IP和端口;4.使用writeDatagram()与readDatagram()/receiveDatagram()收发数据;5.如...原创 2018-12-26 11:07:50 · 5942 阅读 · 0 评论 -
Qt文档阅读笔记-Broadcast Sender Example与Broadcast Receiver Example解析
目录 Broadcast Sender ExampleBroadcast Receiver Example Broadcast Sender Example调用QtNetwork API实现发出广播包实现这个功能的关键代码是下面这段代码:udpSocket->writeDatagram(datagram.data(), datagram.size(), ...原创 2018-12-26 14:24:14 · 4485 阅读 · 0 评论 -
Qt使用udp的Broadcast实现广播图片
目录 基础以及演示源码如下基础以及演示关于UDP的基础博文Qt文档阅读笔记-QUdpSocket基本表述及简单实现https://blog.youkuaiyun.com/qq78442761/article/details/85258574 Qt文档阅读笔记-Broadcast Sender Example与Broadcast Receiver Example解析htt...原创 2018-12-26 21:34:49 · 5128 阅读 · 0 评论 -
Qt文档阅读笔记-Multicast Receiver Example与Multicast Sender Example解析
目录 Multicast Receiver ExampleMulticast Sender ExampleMulticast Receiver Example多播接收实例!要注意几点:1.这个组播QHostAddress最好是填写D类IP,填ABC类在某些情况下可以的,因为路由器默认D类是组播地址,所以为了避免不必要的麻烦,最好是D类!2.QHostAddress配...原创 2018-12-27 10:22:43 · 4842 阅读 · 0 评论 -
Qt工作笔记-发送端发送Json格式的数据包,接收端解析数据包
原理以及运行原理是因为QJsonDocument提供了一个函数toJson可以直接把Json数据转成QByteArray,这样就可以直接发送数据包,然后再按照常规方法解析即可,本源码中含解析内容,详细的解析过程在如下的连接中! Qt工作笔记-Qt5 利用QJson从文件读取Json并解析https://blog.youkuaiyun.com/qq78442761/article/det...原创 2019-01-03 15:54:05 · 15109 阅读 · 7 评论 -
根据Ping(ICMP协议)得到TTL并分析
根据Ping(ICMP协议)得到TTL并分析原创 2016-12-25 14:00:53 · 16627 阅读 · 0 评论