数据报

网络层之IP协议详解

谁都会走 提交于 2019-12-05 20:56:30
IP协议是TCP/IP协议簇中的核心协议,也是TCP/IP的载体。所有的TCP,UDP,ICMP及IGMP数据都以IP数据报格式传输。 IP提供不可靠的,无连接的数据传送服务。 (1)不可靠指它不能保证IP数据报能成功到达目的地。 IP仅提供最好的传输服务。当发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息给信源。任何要求的可靠性必须由上层来提供。 (2)无连接指IP并不维护任何关于后续数据报的状态信息。 每个数据报的处理是相互独立的。IP数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B)每个数据报都是独立的进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。 来源: https://www.cnblogs.com/liufuyang/p/11946565.html

ARP数据报格式

混江龙づ霸主 提交于 2019-12-05 20:30:46
ARP数据报格式 网络通信时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃,在通讯前必须获得目的主机的硬件地址。这就是ARP的作用。 注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。硬件类型指链路层网络类型,1为以太网,协议类型指要转换的地址类型,0x0800为IP地址,后面两个地址长度对于以太网地址和IP地址分别为6和4(字节),op字段为1表示ARP请求,op字段为2表示ARP应答。 如果源主机和目的主机不在同一网段,ARP请求的广播帧无法穿过路由器。在跨网段访问时,当发现目的地址不是本网段IP时,将会把数据包发送给网关处理(一般网关就是路由器来做的),路由器此时就发挥他的路由功能进行IP路由.当到达目的网段后,再在目的网段使用ARP解析出目的主机的MAC地址,实现通信。 来源: https://www.cnblogs.com/jiaxin11/p/11945480.html

UDP协议的详细解析

夙愿已清 提交于 2019-12-05 15:14:53
UDP数据报 一、UDP的概述(User Datagram Protocol,用户数据报协议) UDP是传输层的协议,功能即为在IP的数据报服务之上增加了最基本的服务:复用和分用以及差错检测。 UDP提供不可靠服务,具有TCP所没有的优势: UDP无连接,时间上不存在建立连接需要的时延。空间上,TCP需要在端系统中维护连接状态,需要一定的开销。此连接装入包括接收和发送缓存,拥塞控制参数和序号与确认号的参数。UCP不维护连接状态,也不跟踪这些参数,开销小。空间和时间上都具有优势。 举个例子: DNS如果运行在TCP之上而不是UDP,那么DNS的速度将会慢很多。 HTTP使用TCP而不是UDP,是因为对于基于文本数据的Web网页来说,可靠性很重要。 同一种专用应用服务器在支持UDP时,一定能支持更多的活动客户机。 分组首部开销小**,TCP首部20字节,UDP首部8字节。 UDP没有拥塞控制,应用层能够更好的控制要发送的数据和发送时间,网络中的拥塞控制也不会影响主机的发送速率。某些实时应用要求以稳定的速度发送,能容 忍一些数据的丢失,但是不能允许有较大的时延(比如实时视频,直播等) UDP提供尽最大努力的交付,不保证可靠交付。所有维护传输可靠性的工作需要用户在应用层来完成。没有TCP的确认机制、重传机制。如果因为网络原因没有传送到对端,UDP也不会给应用层返回错误信息

IP报文格式

不打扰是莪最后的温柔 提交于 2019-12-04 15:35:27
IP协议是TCP/IP协议族中的核心协议。它提供不可靠的、无连接的服务,即依赖其他层的协议进行错误控制。在局域网环境中,IP协议通常封装在以太网帧中。所有TCP、UDP、ICMP和IGMP数据都封装在IP数据报中进行传输 版本(version)说明IP协议的版本,允许从一个协议版本变为另一个版本。    长度(length) 描述分组头的长度。    服务类型(Type of service:TOS)用于指示数据报所需的服务类型或“质量”。处理数据报的路由器阅读这个域,如果需要,将提供优先服务。以前,这个域指示军事急件或关键事件所要的优先处理。根据在Internet Engineering Task Force(IETF)最近的讨论看出,现在,TOS的定义已经改变为减少延迟、减少金钱开销、增大吞吐率,或增加可靠性的需要。    总长度(Total length) 说明数据报的总长度,最大长度为65,536个字节。    鉴别(Identification)提供连接独立分段数据报的信息,于是目的站点就可以将它们组装成一个完整的分组。    标志(flags) 有两个标志位。第一个标志位指定一个分组不允许被分段,所以必须在能将处理分组当前长度的子网络上传输。第二个标志位指定一个数据报是一个分段分组的最后。    段偏址(Fragment offset) 对于分段数据报

ElasticSearch插入数据报错{"error":"Content-Type header [application/x-www-form-urlencoded] is not supporte

被刻印的时光 ゝ 提交于 2019-12-04 14:56:53
在使用XPUT往ElasticSearch插入数据事情,报错{"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406} 正确用法时: curl -H "Content-Type: application/json" -XPUT 'http://192.168.177.11:9200/store/books/2' -d '{ "title": "Elasticsearch Blueprints", "name" : { "first" : "Vineeth", "last" : "Mohan" }, "publish_date":"2015-06-06", "price":"35.99" }' 需要添加-H "Content-Type: application/json"指明头信息,具体介绍见 官网介绍 来源: CSDN 作者: LMRzero 链接: https://blog.csdn.net/qq_16669583/article/details/91380083

【操作系统之十三】Netfilter与iptables

时间秒杀一切 提交于 2019-12-03 16:52:36
一、Netfilter Netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换(Network Address Translation,NAT),以及基于用户及媒体访问控制(Media Access Control,MAC)地址的过滤和基于状态的过滤、包速率限制等。 1、关键技术 Netfilter主要采用连线跟踪(Connection Tracking)、包过滤(Packet Filtering)、地址转换、包处理(Packet Mangling)4种关键技术。 (1)连线跟踪 连线跟踪是包过滤、地址转换的基础,它作为一个独立的模块运行。采用连线跟踪技术在协议栈低层截取数据包,将当前数据包及其状态信息与历史数据包及其状态信息进行比较,从而得到当前数据包的控制信息,根据这些信息决定对网络数据包的操作,达到保护网络的目的。 当下层网络接收到初始化连接同步(Synchronize,SYN)包,将被netfilter规则库检查。该数据包将在规则链中依次序进行比较。如果该包应被丢弃,发送一个复位(Reset,RST)包到远端主机,否则连接接收。这次连接的信息将被保存在连线跟踪信息表中,并表明该数据包所应有的状态。这个连线跟踪信息表位于内核模式下

TCP协议

匿名 (未验证) 提交于 2019-12-02 22:56:40
TCP头部信息:每 个TCP报文段,用于指定通信的源端端口号,目的端端口号,管理TCP连接,控制两个方向的数据流 TCP状态转移图 TCP数据流 TCP数据流的控制 特点: 面向连接,可靠传输,数据流。 TCP协议的使用要求: 双方必须先建立连接,再开始数据的读写。 双方必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。-》全双工,双方的数据读写可以通过一个连接进行,完成数据交换后,通信双方都必须断开连接以释放资源。连接为一对一,所以基于广播和多播的应用程序不能使用TCP服务。 数据流: 发送端执行的写操作次数和接收端执行的读操作次数之间没有任何数量关系。应用程序对数据的发送和接收没有边界限制。数据报:发送端应用程序每执行一次写操作,UDP模块就将其封装成一个UDP数据报发送,接收端必须及时针对每一个UDP数据报执行读操作,否则就会丢包,并且,没有指定足够的应用程序缓冲区来读取UDP数据,UDP数据将会被截断。 **可靠:**TCP采用发送应答机制,发送端发送的每个TCP报文段都必须得到接收方的应答,才认为这个TCP报文段传输成功。 TCP采用超时重传机制,发送端在发送出一个TCP报文段之后启动定时器,如果在定时事件内未收到应答,将重发报文段。 TCP的头部结构: 16位端口号:告知主机该报文段来自哪里以及传到哪个上层协议或者应用程序。(TCP通信时

selenium抓取淘宝数据报错:warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless

匿名 (未验证) 提交于 2019-12-02 22:56:40
ssh: // root@192.168.33.12:22/root/anaconda3/bin/python3 -u /www/python3/maoyantop100/meishi_selenium.py /root/anaconda3/lib/python3. 6 /site-packages/selenium/webdriver/phantomjs/webdriver.py: 49 : UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead warnings.warn( ‘ Selenium support for PhantomJS has been deprecated, please use headless ‘ 错误原因:Selenium 已经弃用 PhantomJS ,请使用火狐或者谷歌无界面浏览器。 解决方法:selenium的版本问题,使用 pip show selenium 显示默认安装的是 3.13.1 版本 卸载当前版本 pip uninstall selenium 卸载之后重新安装selenium 版本 2.48.0 安装成功,专门写出来这个版本号是因为我使用2.0

收到

笑着哭i 提交于 2019-12-02 06:44:55
网络层概述(Network Layer) (单位:分组packet) 在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻的网络地址。如果你在谈论一个IP地址,那么你是在处理第3层的问题,这是“数据包”问题,而不是第2层的“帧”。IP是第3层问题的一部分,此外还有一些路由协议和地址解析协议。有关路由的一切事情都在这第3层处理。地址解析和路由是3层的重要目的。网络层还可以实现拥塞控制、网际互连等功能。在这一层,数据的单位称为数据包/分组(packet)。 网络层定义的规范有:IP、IPX、RIP、OSPF、ICMP、IGMP等。 网络层重要功能 转发: 涉及分组在单一的路由器中从一条入链路到出俩露露的传输。 路由选择: 涉及一个网络的所有路由器经由路由选择协议共同交互决定的从源到目的地结点所采用的路径。 网络层知识点 因特网中的分组转发 网际协议(IP) 网络层编址和IPv4的数据报格式 网络地址转换(NAT) 数据包分段、因特网控制报文协议(ICMP) IPv6: | 路由选择功能: | 路由选择算法类型(链路状态和距离矢量算法) | | ------ | ---- | | | 等级制路由选择方法 | | |

tcp三次握手四次挥手详解(与udp的区别)

巧了我就是萌 提交于 2019-12-01 19:30:31
tcp详解 TCP使用固定的连接 TCP用于应用程序之间的通信 IP负责计算之间的通信 TCP负责把数据分割并装入IP包,然后他们到达的时候重新组合他们。 IP负责将包发送至接收者。 TCP报文格式 URG:紧急标志。紧急标志位“1”标明该位有效。 ACK:确认标志。标明确认编号栏有效。大多数情况下默认该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。 PSH:推标志。该标志置位时,接收端不该将数据进行队列处理,而是尽可能块的将数据转由应用处理。 RST:复位标志。用于复位相应的TCP连接。 SYN:同步标志。表明同步序列编号栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。 FIN:结束标志。 三次握手 第一次握手:Client将标志位置为1,随机产生一个seq=J,并将改数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。 第二次握手:Server收到数据包后将标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个seq=K,并将数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。