网络知识
文章平均质量分 80
ouyangshima
找到心中的那份自信
技术不牢,地动山摇
展开
-
[网络知识]TCP协议中的粘包与拆包
在平时客户端socket开发中,如果客户端连续不断的向服务端发送数据包时,服务端接收的数据会出现两个数据包粘在一起的情况,这就是TCP协议中经常会遇到的粘包以及拆包的问题。我们都知道TCP属于传输层的协议,传输层除了有TCP协议外还有UDP协议。那么UDP是否会发生粘包或拆包的现象呢?答案是不会。UDP是基于报文发送的,从UDP的帧结构可以看出,在UDP首部采用了16bit来指示UDP数据报文...原创 2020-01-14 19:42:42 · 2188 阅读 · 0 评论 -
[网络基础知识]TCP报文结构
TCP是面向字节流的,但传送的数据单元却是报文段。什么是报文例如一个 100kb 的 HTML 文档需要传送到另外一台计算机,并不会整个文档直接传送过去,可能会切割成几个部分,比如四个分别为 25kb 的数据段。而每个数据段再加上一个TCP首部,就组成了TCP报文。一共四个 TCP 报文,发送到另外一个端。另外一端收到数据包,然后再剔除TCP首部,组装起来。等到四个数据包都收到了,...原创 2011-05-04 17:24:00 · 1416 阅读 · 0 评论 -
[网络基础知识]TCP/IP数据包的封装与解封
数据封装(Data Encapsulation)是指将协议数据单元(PDU)封装在一组协议头和尾中的过程。在OSI七层参考模型中,每层主要负责与其它机器上的对等层进行通信。该过程是在协议数据单元(PDU)中实现的,其中每层的PDU一般由本层的协议头、协议尾和数据封装构成.应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)不同的协议...原创 2010-03-15 18:27:00 · 4926 阅读 · 0 评论 -
[网络基础知识]IP头部结构
版本号(Version):4位;IP协议的版本,目前的IP协议版本号为4,下一代IP协议版本号为6。 首部长度(Header Length):4位;IP报头的长度。固定部分的长度(20字节)和可变部分的长度之和。共占4位。最大为1111,即10进制的15,代表IP报头的最大长度可以为15个32bits(4字节),也就是最长可为15*4=60字节,除去固定部分的长度20字节,可变部分的长度最大...原创 2010-03-17 13:19:00 · 3976 阅读 · 0 评论 -
[网络基础知识]HTTP协议结构
URL即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一文档。URL有协议、主机和端口(默认为80)以及文件名三部分构成。HTTP的工作原理HTTP协议的主要特点支持C/S(客户/服务器)模式。 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST,每种方法规定了客户与服务器联系的类型...原创 2010-03-17 12:19:00 · 886 阅读 · 0 评论 -
[网络基础知识]TCP有限状态机
TCP是传输层协议,实现了一种可靠的通信。它从不同角度提供了多种可靠性保障措施来为网络传输提供确定性。连接性就是其中之一,不像UDP的无连接状态,TCP在数据传输之前会进行连接,只有双方都协调完成后,才会进行数据传输;同样的,在结束时,又会断开连接,通告传输的完成;在数据传输过程中,又会对每个传输进行确认。粗实箭头表示客户进程的正常迁移粗虚线箭头表示对服务器进程的正常迁移细线箭头表示异常变迁TCP...原创 2010-06-20 20:38:00 · 1351 阅读 · 1 评论 -
[概念]HTTP中GET和POST的区别
Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE.URL全称是统一资源定位符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息;而POST一般用于更新资源信息;PUT...原创 2017-05-05 17:18:11 · 1098 阅读 · 0 评论 -
[网络基础知识]IPv6数据报
版本(Version)版本字段用来表示IP数据报使用的是IPv6协议封装,占4位,对应值为6(0110)通信分类(Traffic Class)通信分类字段用来标识对应IPv6的通信流类别,或者说是优先级别,占8位,类似于IPv4中的ToS(服务类型)字段。流标签(Flow Label)流标签字段时IPv6数据报中新增的一个字段,占20位,可用来标记报文的数据流类型,以便在网络层区分不同的报文。流标...原创 2010-03-20 10:08:00 · 1741 阅读 · 0 评论 -
[网络基础知识]文件传输协议FTP
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文...原创 2010-04-13 17:55:00 · 1439 阅读 · 0 评论 -
[网络基础知识]WebSocket协议
WebSocket的出现,使得浏览器具备了实时双向通信的能力。什么是WebSocketHTML5开始提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。它基于TCP传输协议,并复用HTTP的握手通道。对网络应用层协议的学习来说,最重要的往往就是连接建立过程、数据交换过程。当然,数据的格式是逃不掉的,因为它直接决定了协议本身的能力。好的数据格式能让协议更高效、扩展性更好。如...原创 2010-10-28 23:09:00 · 794 阅读 · 0 评论 -
MacOS10.12 Apache 403错误的坑
MacOS中Apache的配置文件http.conf在/etc/apache2目录下1.在配置文件httpd.conf中找到Directory这一行,然后在下面修改成如下图这样:<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow allow from all Re...原创 2018-05-21 14:15:09 · 1022 阅读 · 1 评论 -
[Tomcat]MAC下tomcat的使用教程
1. 官网下载Tomcat(tomcat.apache.org),选择tar.gz格式的,我用的是tomcat8 2. 解压Tomcat到目录:/Library 中,为了其他版本的Tomcat,文件夹重命名为“Tomcat8” 3. 打开终端(Terminal),修改一下文件夹的权限 sudo chmod 755 /Library/Tomcat8/bin/*.sh 4.进入到/Library...原创 2016-12-12 19:10:52 · 2358 阅读 · 0 评论 -
mac下Apache服务配置Https
iOS开发都是用的Mac OS X,而Mac OS X中正好自带了Apache服务,所以这里我们只需要简单的在终端中敲击一行命令,就能启动Web服务了。sudo apachectl start这时我们在浏览器中输入"http://127.0.0.1/",如果出现It Works!,那么恭喜你Web服务器启动成功。Web文件目录是:"/Library/WebServer/Documents/", 系原创 2016-11-15 18:08:01 · 3759 阅读 · 0 评论 -
[网络基础知识]Linux的五种IO模型
在Java中,主要有三种IO模型,分别是阻塞IO(BIO)、非阻塞IO(NIO)和 异步IO(AIO)。Java中提供的IO有关的API,在文件处理的时候,其实依赖操作系统层面的IO操作实现的。比如在Linux 2.6以后,Java中NIO和AIO都是通过epoll来实现的,而在Windows上,AIO是通过IOCP来实现的。可以把Java中的BIO、NIO和AIO理解为是Java语言对操作系...原创 2010-03-28 15:44:00 · 1039 阅读 · 0 评论 -
[网络基础知识]AMQP高级消息队列协议
AMQP协议AMQP协议的全称为: Advanced Message Queuing Protocol,提供统一消息服务的应用层标准高级消息队列协议;是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。当前各种应用大量使用异步消息模型,并随之产生众多消息中间件产品及协议,标准的不一致使应用与中间...原创 2013-03-11 11:35:39 · 2581 阅读 · 0 评论 -
[RTMP协议]常用直播流地址
RTMP、RTSP、HTTP这三个协议都属于互联网 TCP/IP 五层体系结构中应用层的协议。理论上这三种都可以用来做视频直播或点播。但通常来说,直播一般用 RTMP、RTSP。而点播用 HTTP。播放软件推荐:VLC要播放视频直播流,或者测试一个直播视频地址是否可以使用。这里推荐 VLC 媒体播放器。功能强大且跨平台。支持 Windows、Mac OS、Linux、Android、iOS。...原创 2019-07-30 18:33:25 · 139755 阅读 · 1 评论 -
[RTMP协议]RTMP块头报文
RTMP协议是一个互联网TCP/IP五层体系结构中应用层的协议。RTMP协议中基本的数据单元称为消息(Message)。当RTMP协议在互联网中传输数据的时候,消息会被拆分成更小的单元,称为消息块(Chunk)。消息头MessageHeader消息类型:1byte,Message Type ID取值含义:A协议控制消息,Message Type ID = 1~6,主要用于协议内的控...原创 2019-08-05 16:43:39 · 1984 阅读 · 1 评论 -
[RTMP协议]RTMP设计思想
RTMP传输基本流程发送端把数据封装成消息(Message)。把消息分割成消息块(Chunk, 网络中实际传输的内容)。将分割后的消息块(Chunk)通过TCP协议发送出去。接收端:在通过TCP协议收到数据后, 先将消息块重新组合成消息(Message)。通过对消息进行解封装处理就可以恢复出数据。RTMP的突出优点是: 延时低,正常延时1~3秒,理想的话直播可控制在1秒...原创 2019-08-02 12:00:07 · 803 阅读 · 0 评论 -
[网络基础知识]四次挥手
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。第一次挥手:主动关闭方发送一个FIN并进入FIN_WAIT1状态第二次挥手:被动关闭方接收到主动关闭方发送的FIN并...原创 2010-03-28 22:24:00 · 641 阅读 · 0 评论 -
[网络基础知识]三次握手
TCP会话的每一端都包含一个32位(bit)的序列号,该序列号被用来跟踪该端发送的数据量。每一个包中都包含序列号,在接收端则通过确认号用来通知发送端数据成功接收。TCP在其协议头中使用大量的标志位或者说1位(bit)布尔域来控制连接状态,一个包中有可以设置多个标志位。TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:所谓三次握手(Three-way Handsh...原创 2010-03-28 22:15:00 · 900 阅读 · 1 评论 -
[网络基础知识]以太网帧格式
Ehternet II类型以太网帧的最小长度为64字节(6+6+2+46+4),最大长度为1518字节(6+6+2+1500+4)。目的MAC地址:指明帧的接受者源MAC地址:指明帧的发送者长度(Length):帧的数据字段的长度(长度或类型)类型(Type):用来标识上层协议的类型,如IPv4,IPv6。上层协议,表示网络层使用的协议。数据帧校验序列(FCS):用于确定数据包在传输过程中是否损坏...原创 2010-03-22 17:51:00 · 833 阅读 · 0 评论 -
[Win32]客户端程序
客户端程序过程一个Socket客户端程序的典型过程如下。客户端程序在运行后,首先需要使调用WSAStartup函数,确保进程加载socket应用程序所必须的环境和库文件,如Ws2_32.dll。调用函数Socket创建SOCKET,在创建时需指定使用的网络协议、连接类型等。填充SOCKADDR结构,指定服务端的地址、端口等。调用connect函数连接到服务端。如果连接成功,就可以使原创 2013-05-13 21:21:18 · 1764 阅读 · 0 评论 -
[网络基础知识]UDP数据报结构
UDP数据与TCP数据基本一致,唯一的不同是UDP传给IP的信息单元称作UDP数据报(UDP datagram),而且UDP的首部长为8字节。UDP数据报格式有首部和数据两个部分。首部很简单,共8字节。包括: ◆源端口(Source Port):2字节,源端口号。 ◆目的端口(Destination Port ):2字节,目的端口号。 ◆长度(Length):2字节,UDP...原创 2013-05-17 17:10:04 · 2266 阅读 · 0 评论 -
[Tomcat]Tomcat内部结构
Tomcat是一个JSP/Servlet容器。其作为Servlet容器,有三种工作模式:独立的Servlet容器、进程内的Servlet容器和进程外的Servlet容器。Tomcat的组织结构 Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的是Catalina servlet容器,其他组件按照一定的格式要求配置在这个顶层容器中。 Tomcat的各种组件...原创 2013-05-20 11:15:35 · 3863 阅读 · 1 评论 -
[网络基础知识]网络抓包工具Wireshark简单使用
Wireshark是一个网络数据包分析软件。网络数据包分析软件的功能是截取网络数据包,并尽可能显示出最为详细的网络数据包数据。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。网络管理员使用Wireshark来检测网络问题,网络安全工程师使用Wireshark来检查资讯安全相关问题,开发者使用Wireshark来为新的通讯协定除错,普通使用者使用Wireshark来学习网...原创 2013-05-21 00:34:27 · 3483 阅读 · 1 评论 -
WindowsSockets基础—概念
本章重点讲解WindowsSockets的基本知识。协议特征,IP定址,TCP和UDP Socket应用程序所调用的windows Sockets API,套接字选项。Windows Socket应用程序与WindowsSockets的关系上图为Windows Sockets应用程序A与应用程序B进行通信的过程。从用户进程的角度看,这两个应用程序都是通过调用WindowsSocketsAPI来实现...原创 2013-05-22 21:36:49 · 2400 阅读 · 0 评论 -
WindowsSockets基础—TCP,UDP程序
TCP程序 TCPServer// TCPServer.cpp : 定义控制台应用程序的入口点。//接收客户的发来的"MyTCP"#include <stdio.h>#include <WinSock2.h>#pragma comment(lib,"ws2_32.lib")#define BUF_SIZE 64void main(){ WSADATA w...原创 2013-05-23 00:37:58 · 9574 阅读 · 7 评论 -
[网络基础知识]rtmp协议消息简介
概述RTMP协议是一个互联网TCP/IP体系结构中应用层的协议. RTMP协议中基本的数据单元称为消息(Message). 当RTMP协议在互联网中传输数据的时候, 消息(Message)会被拆分成更小的单元, 称为消息块(Chunk).消息消息是RTMP协议中基本的数据单元. 消息由Message Header与Message Body组成.消息的报文结构如图:rtmp消息说明:...原创 2012-05-08 11:33:41 · 1214 阅读 · 0 评论 -
[网络基础知识]icmp-Internet控制报文协议
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时...原创 2013-05-23 23:46:10 · 2284 阅读 · 0 评论 -
linux下C++SocketTCP编程---服务器端
NetServer.h#ifndef NETSERVER_H_#define NETSERVER_H_#include #include #include #include #include #include #include #include #include #include #include using namespace std;class NetSe原创 2012-05-08 11:40:24 · 1422 阅读 · 1 评论 -
[网络基础知识]File协议--本地文件传输协议
协议啥叫协议-schema,规定你干啥他干啥我干啥,每个人不能乱来,和谐共处使用File协议基本的格式:file:///文件路径比如要打开F盘flash文件夹中的1.swf文件,那么可以在资源管理器或浏览器地址栏中输入:file:///f:/flash/1.swf回车uri中为什么本地文件file后面跟三个斜杠, http等协议跟两个斜杠?因为URI结构是:sche...原创 2013-05-27 22:59:53 · 4343 阅读 · 4 评论 -
Select模式开发[阻塞]
套接字Select模型是比较常用的一种I/O模型。利用该模型使得WindowsSockets应用程序可以在同一时间内管理和控制多个套接字。该模型的核心是select()函数。在使用该函数是,还需要用到FD_SET,FD_ZERO,FD_ISSET和FD_CLR四个宏。开发WindowsSocket程序时,应用程序需要这样的能力:当执行操作的套接字满足可读可写条件时,需要给应用程序发送通知,接收到这...原创 2013-05-30 21:40:23 · 2874 阅读 · 1 评论 -
[Win32]服务器端程序
服务器端程序流程服务器端的功能在指定的端口上监听,等待客户端的连接。在连接建立后可使用send()、recv()发送、接收数据。一般情况下,socket程序服务端过程如下程序在运行后,首先需要调用WSAStartup()加载ws2_32.dll调用socket()创建用于监听的SOCKET,在创建时需要指定使用的网络协议,连接类型等调用bind()将SOCKET绑定到网络地址和端口调用listen...原创 2013-05-15 21:20:00 · 2371 阅读 · 1 评论 -
[网络编程]VS2010+OpenSSL安装与初步了解
OpenSSL简介功能作用:SSL(Secure Socket Layer)是netscape公司提出的主要用于web的安全通信标准,分为2.0版和3.0版。TLS(Transport Layer Security)是IETF的TLS 工作组在SSL3.0基础之上提出的安全通信标准,目前版本是1.0,即RFC2246。SSL/TLS提供的安全机制可以保证应用层数据在互联网络传输不被监听、伪原创 2013-07-26 18:50:49 · 2859 阅读 · 0 评论 -
阻塞与非阻塞,同步与异步
阻塞与非阻塞阻塞和非阻塞是指当进程访问的数据如果尚未就绪,进程是否需要等待,简单说这相当于函数内部的实现区别,也就是未就绪时是直接返回还是等待就绪;所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回。例如socket编程中connect、accept、recv、recvfrom这样的阻塞程序。再如原创 2013-06-03 22:08:00 · 1519 阅读 · 0 评论 -
[网络编程]Win32 Socket+OpenSSL实例
OpenSSLopenSSL 不仅仅是 SSL。它可以实现消息摘要、文件的加密和解密、数字证书、数字签名和随机数字。关于 OpenSSL 库的内容非常多,远不是一篇文章可以容纳的。OpenSSL 不只是 API,它还是一个命令行工具。命令行工具可以完成与 API 同样的工作,而且更进一步,可以测试 SSL 服务器和客户机。服务器编写步骤客户端编写步骤原创 2013-07-26 20:00:20 · 5980 阅读 · 2 评论 -
[网络基础知识]TCP/IP简介
OSI开发系统互连参考模型(OSI,Open System Interconnection)物理层:bit流,有计算机和网络介质组成,负责将数据编码成比特流,并以此方式在网上传输数据链路层:负责准备物理层传输,修正传输中的错误,将数据封装成帧(Frame)等网络层:管理网络地址,选择路由,定义数据封包(Packet)等传输层:将上层数据分段(Segment),提供端到端的传输,提供服务质量(QoS...原创 2013-05-21 00:51:36 · 3041 阅读 · 2 评论 -
[网络基础知识]三次握手,四次分手
建立连接(三次握手)TCP连接的建立:TCP用三次握手过程创建一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器...原创 2013-06-03 18:02:27 · 2818 阅读 · 0 评论 -
[HTTP]application/x-www-form-urlencoded和multipart/form-data
application/x-www-form-urlencoded当表单使用 application/x-www-form-urlencoded 时,需要对参数进行 urlencode 编码和序列化如,表单提交参数(key-value)为:param1:websiteparam2:https://www.google.com经过 urlencode 编码后:param1:web...原创 2013-05-16 21:35:35 · 2207 阅读 · 1 评论