码莎拉蒂 .
这个作者很懒,什么都没留下…
展开
-
Android之模拟网络请求返回http 502、400、401、402错误码
1 问题app 网络框架协程没有做网络异常捕获处理,想本地测试网络接口,希望网络接口返回Http的错误码比如502、400、401、4022 解决办法1、pc安装Fiddler Everywhere2、让Fiddler Everywhere支持抓http和https的包3、保持手机和电脑同一个局域网,然后确保Fiddler Everywhere能抓到手机包4、设置Auto Responseder我们填上需要过滤的...原创 2021-04-02 18:28:04 · 5086 阅读 · 50 评论 -
linux网络编程之sockaddr_in和in_addr区别
1、struct in_addrstruct in_addr就是32位IP地址。 struct in_addr { union { struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; struct { u_short s_w1,s_w2; } S_un_w;原创 2017-03-09 21:12:20 · 5645 阅读 · 0 评论 -
linux网络编程之用多线程实现客户端到服务端的通信(基于udp)
1、开启一个线程接受数据,主线程发送数据的代码#include #include #include #include #include #include #include #include #include #include #include //接收线程,负责消息并且显示void *recv_thread(void* arg){ int udp_fd = (原创 2017-03-08 23:30:09 · 7723 阅读 · 0 评论 -
linux网络编程之inet_pton和inet_ntop函数
Linux下这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换 而且,inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。 1、inet_pton函数原型如下[将“点分十进制” -> “整数”] #include #include #include int inet_p原创 2017-03-08 01:08:37 · 14505 阅读 · 0 评论 -
linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
1、sendto和recvfrom函数介绍sendto(经socket传送数据)相关函数 send , sendmsg,recv , recvfrom , socket表头文件 #include #include 定义函数 int sendto ( int s , const void * msg, int l原创 2017-02-23 21:13:54 · 14413 阅读 · 18 评论 -
linux网络编程之套接字(套接口)、ip、端口理解
1、套接字、ip、端口介绍1)、套接字源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。它是网络通信过程中端点的抽象表示,包含进行网络通信必需的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。或者说,套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机原创 2017-02-22 10:32:59 · 10272 阅读 · 0 评论 -
linux网络编程之用socket实现简单客户端和服务端的通信(基于TCP)
一、介绍基于TCP协议通过socket实现网络编程常用API1、读者如果不是很熟悉,可以先看我之前写的几篇博客,有socket,地址结构的理解,更加方便读者理解地址分别是:1)、http://blog.youkuaiyun.com/u011068702/article/details/564799272)、http://blog.youkuaiyun.com/u011068702/article/de原创 2017-02-23 20:55:46 · 27411 阅读 · 29 评论 -
linux网络编程之inet_addr和inet_ntoa使用总结
1、介绍inet_addr函数inet_addr函数转换网络主机地址(如192.168.1.10)为网络字节序二进制值,如果参数char *cp无效,函数返回-1(INADDR_NONE),这个函数在处理地址为255.255.255.255时也返回-1,255.255.255.255是一个有效的地址,不过inet_addr无法处理in_addr_t inet_addr(const原创 2017-02-22 20:13:26 · 32919 阅读 · 1 评论 -
linux网络编程之网络字节序、主机字节序、大端、小端
1、主机字节序介绍 不同的CPU有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机字节序,存储方式有2种 1)、大端模式 大端模式(Big-Endian)就是高位字节排放在内存的低地址端(即该值的起始地址),低位字节排放在内存的高地址端 2 ) 、小端模式原创 2017-02-22 13:34:41 · 6512 阅读 · 0 评论 -
linux网络编程之地址结构sockaddr和sockaddr_in的区别
1、介绍sockaddr结构体struct sockaddr在/usr/include/linux/socket.h中定义struct sockaddr { unsigned short sa_family; // 2 bytes address family, AF_xxx char sa_data[14]; // 14 by原创 2017-02-22 11:39:50 · 3817 阅读 · 0 评论 -
linux网络编程之怎么配置好unp.h文件
1、获取unp源码下载地址:http://www.unpbook.com/src.html然后用tar -zxvf unpv13e.tar.gz命令解压2、进入unpv13e目录执行configurecd unpv13e ,然后执configure文件3、打开README文件,使用make命令打开README文件上面写原创 2017-03-09 21:58:16 · 9274 阅读 · 1 评论 -
linux网络编程之一般应用采用的协议和不同套接字的地址结构以及用户进程和内核通过哪些函数传递套接字的地址结构
1、一般应用采用的协议2、不同套接字的地址结构3、用户进程和内核通过哪些函数传递套接字的地址结构从进程到内核传递套接字的地址结构函数有3个 bind、connect、sendto函数从内核到进程传递套接字的地址结构函数有4个函数accept、recvfrom 、getsockname 、getpeername原创 2017-03-10 22:35:33 · 2493 阅读 · 0 评论 -
linux网络编程之用epoll实现io复用(基于tcp)
1、epoll介绍 epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。2、epollAPIepoll操作过程需要三个接口原创 2017-03-17 10:04:33 · 2896 阅读 · 0 评论 -
linux网络编程之Listen函数参数介绍
1、listen()函数介绍listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程。在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变为被动连接。listen函数在一般在调用bind之后-调用accept之前调用,它的函数原型是:#includeint listen(int sockfd, int b原创 2017-03-15 15:23:06 · 3574 阅读 · 0 评论 -
linux网络编程之用select函数实现io复用(基于TCP)引发的思考
1、基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复原创 2017-03-14 23:49:54 · 3549 阅读 · 27 评论 -
linux网络编程之用一张图片说明套接口常用函数
原创 2017-03-14 15:03:51 · 2491 阅读 · 0 评论 -
linux网络编程之setsockopt()函数来设置socket状态以及getsockopt函数只用总结
1、setsockopt函数头文件:#include <sys/types.h> #include <sys/socket.h>定义函数:int setsockopt(int s, int level, int optname, const void * optval, ,socklen_toptlen);函数说明:setsockopt()用来设置...原创 2017-03-14 14:28:25 · 5388 阅读 · 0 评论 -
linux网络编程之用select方法实现io复用(基于udp)
1、基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套原创 2017-03-13 23:16:59 · 6264 阅读 · 0 评论 -
linux网络编程之用一张图片说明函数inet_ntop、inet_pton、inet_addr、inet_ntoa 、inet_aton函数之间的关系
1、inet_ntop、inet_pton、inet_addr、inet_ntoa 、inet_aton函数之间的关系2、inet_ntop、inet_pton函数的源代码1、inet_pton函数源码int inet_pton(int family, const char *strptr, void *addrptr){ if (family ==原创 2017-03-10 23:56:25 · 4512 阅读 · 0 评论 -
linux之网络编程ICMP校验算法
1、ICMP校验算法代码 unsigned short cal_chksum(unsigned short *addr,int len) { int nleft = len; int sum = 0; unsigned short *w = addr; unsigned short answer =原创 2017-03-01 15:46:15 · 2671 阅读 · 0 评论 -
Fiddler之解决https链接返回数据显示乱码问题
1 、问题我网页访问淘宝,然后F12查看关键链接,返回的数据里面有json各式的数据,然后我通过关键字在Fiddler里面找到链接,然后查看返回的内容是乱码。2 、解决办法然后这样设置,再去查看SyntaxView或者Raw都可以看到原始数据。...原创 2020-07-25 23:13:31 · 3399 阅读 · 0 评论 -
TCP协议之如何保证传输的可靠性
一、问题TCP协议之如何保证传输的可靠性?我们先看下TCP的头部图片和TCP头部的字段/*TCP头定义,共20个字节*/typedef struct _TCP_HEADER { short m_sSourPort; // 源端口号16bit short m_sDestPort; // 目的端口号16bit unsign...原创 2020-01-12 04:32:35 · 4121 阅读 · 0 评论 -
TCP之三次握手和四次挥手过程
1 TCP包头里面的标志位下图为TCP头部里面部分信息,入下标志位,每个标志位占一位。标志位这里会涉及3个,ACK SYN FINACK:确认序号有效。SYN:发起一个新连接。FIN:释放一个连接。2 三次握手过程第一次握手Client将标志位SYN置1,随机产生一个值seq=J,并将数据包发给Server第二次握手...原创 2020-01-12 02:12:32 · 3492 阅读 · 0 评论 -
TCP包头、UDP包头、IP包头、和MAC帧包头详细字段和包头大小
1 TCP头TCP是一种可靠的、面向连接的字节流服务,头部定义如下。/*TCP头定义,共20个字节*/typedef struct _TCP_HEADER { short m_sSourPort; // 源端口号16bit short m_sDestPort; // 目的端口号16bit unsigned int m_ui...原创 2020-01-11 23:44:35 · 7672 阅读 · 0 评论 -
HTTP1.0、HTTP1.1 、SPDY、HTTP2.0之演变过程和优化
一、协议的演变过程和时间HTTP1.0(1996年) -> HTTP1.1(1999年) -> SPDY(2012年google提出了SPDY的方案) -> HTTP2.0(2013年8月进行首次合作共事性测试)二、影响一个HTTP网络请求的因素主要有两个:带宽和延迟1)带宽:网络基础建设已经使得带宽得到极大的提升,一般不再会担心带...原创 2019-12-31 22:30:20 · 2894 阅读 · 0 评论 -
TCP之滑动窗口
一、滑动窗口的基本知识TCP滑动窗口包含了发送窗口和接收窗口1)、TCP滑动窗口的最大值TCP数据包头部里面有个窗口值,默认窗口是一个16bit位字段,表示窗口的字节容量,所以TCP滑动窗口的最大值是2^16-1=65535个字节,TCP里面也有窗口扩大因子可把原来16bit的窗口,扩大为31bit,下图为TCP包头的部分结构。2)、 发送窗口对于...原创 2019-12-20 03:06:56 · 5089 阅读 · 0 评论 -
Fiddler之为什么我没有抓到网络请求的js链接
1问题我开了Fiddler,没有抓到js的连接请求,因为我需要替换js文件,我以为我是没有开启抓起https的连接,但是的确开启了。2 原因浏览器里面有缓存,部分js文件不会再进行请求。2解决办法在浏览器页面按下F12,然后勾选Disable cache,这样你能确保js这些链接可以每次都会刷新去请求,如下图。...原创 2019-06-27 11:23:05 · 5578 阅读 · 0 评论 -
Windows之Fiddler抓HTTP和HTTPS请求
1Fiddler1) 介绍:Fiddler是抓包工具,原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改2)下载地址:到Fiddler官网下载,直接百度Fiddler官网2Fiddler抓HTTP的包比如我们需要抓谷歌浏览器的http请求的包,我们需要设置谷歌浏览器的代理...原创 2018-11-30 23:21:41 · 5414 阅读 · 0 评论 -
TCP协议中的三次握手和四次挥手(图解)
建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。那如何断开连接呢?简单的过程如下:【注转载 2016-08-01 00:13:33 · 2255 阅读 · 0 评论 -
WiresShark之抓http包如何倒出图片格式的对象
1 问题在WireShark抓取http数据包之后,里面有图片链接,我们怎么进行导出来,当然这里在浏览器或者Fiddler里面普通图片格式可以显示出来。2 举例子操作说明1)比如我们访问www.hao123.com.cn这个网站,我们首先打开wireShark,开启抓包,然后用浏览器访问这个网站,页面效果如下,我们现在需要抓这个“网址之家”这个图片。...原创 2019-05-21 21:37:31 · 6283 阅读 · 0 评论 -
windows之如何刷新电脑DNS缓存
1问题我在windows电脑里面的终端通过ping 泛域名,可以看到这个域名解析的地址,后面做了这个泛域名解析地址做了修改,但是我ping这个泛域名地址的时候依然是之前的地址,然后我把终端关闭掉,再次ping这个地址,发现解析的地址依然和上次一样,然后想到是DNS有缓存,我们刷新下DNS缓存2解决办法直接在windows电脑终端里面输入下面的命令ip...原创 2019-04-19 22:57:50 · 6694 阅读 · 0 评论 -
linux之路由知识之ip route 命令中的疑惑
1.基础知识1.1 路由 (Routing)1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库) 基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应用或IP源地址等属性来选择转发路径。ip rule 命令:Usage: ip rule [ list | add | del ]转载 2016-12-27 22:04:51 · 34553 阅读 · 0 评论 -
linux 路由表设置 之 route 指令详解
使用下面的 route 命令可以查看 Linux 内核路由表。 [cpp] view plain copy # route Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 0 0转载 2016-12-27 21:57:28 · 7111 阅读 · 0 评论 -
linux环境下用TcpDump抓包分析总结
1、手机IP怎么知道手机ip,输入下面命令adb shellifconfig比如得到手机ip 2.0.0.12、目标IP比如目标地址ip为10.0.0.13、抓包命令我们不带端口命令如下tcpdump -i any host 2.0.0.1 -nv代码端口的命令如下(端口为50129)tcpdump -i any host 2.0.0.1 and po原创 2016-12-26 15:37:04 · 3952 阅读 · 0 评论 -
Wireshark和 TcpDump抓包分析心得
1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Windows平台下使用Wireshark,如果是Linux的话,我直接用tcpdump了,因为我工作环境中的Linux一般只有字符界面,且一般而言Linux都自带的tcpdump,或者用tcpdump抓包以后用Wireshark打开分析。在Win转载 2016-10-19 20:08:20 · 3304 阅读 · 0 评论 -
TCP/IP、Http、Socket的区别
TCP/IP、Http、Socket的区别大学学习网络基础的时候老师讲过,网络由下往上分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层,三者从本质上来说没有可比性,socket则是对TCP/IP协议的封装和应用(程序员层面上)。也可以说,TPC/IP协议是传输层协议,主要解转载 2016-10-24 19:49:42 · 2479 阅读 · 0 评论 -
tcpdump抓取HTTP包
http://blog.youkuaiyun.com/kofandlizi/article/details/8106841cpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854 0x4745 为"GET"前两个字母"GE"0x4854 为"HTTP"前两个字母"HT"说明:转载 2016-09-08 09:23:51 · 2532 阅读 · 0 评论 -
TCP握手/挥手的过程分析
TCP连接建立在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。服务器必须准备好接受外来的连接。这通过调用socket、 bind和listen函数来完成,称为被动打开(passive open)。第一次握手:客户通过调用connect进行主动打开(active open)。这引起客户TCP发送一个SYN(表示同步)分节(SYN=J),它告诉服务转载 2016-07-31 23:57:33 · 2613 阅读 · 0 评论 -
OSI各层相关的协议
一、OSI各层物理层:EIA/TIA-232, EIA/TIA-499, V.35, V.24, RJ45, Ethernet, 802.3, 802.5, FDDI, NRZI, NRZ, B8ZS数据链路层:Frame Relay, HDLC, PPP, IEEE 802.3/802.2, FDDI, ATM, IEEE 802.5/802.2网络层:IP,IPX,AppleTalk转载 2016-07-31 23:20:39 · 2682 阅读 · 0 评论 -
网关和路由的区别
网关:网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换转载 2016-07-31 22:47:05 · 2739 阅读 · 0 评论