tcp协议

ping and netstat

梦想的初衷 提交于 2020-03-10 07:25:10
ping 127.0.0.1 是你本地的回环地址! 实际上只要是127.0.0.1到127.255.255.255都是回环地址!都是可以PING检查的! 它能ping通,说明你的TCP/IP协议栈没问题!如果有问题,你就得检查TCP/IP协议栈,或者重新安装它! 你本地IP是检测你的网卡了,检查你网卡工作是否正常! (要不你做个试验,你把网卡禁用,你发现可以ping127.0.0.1,但ipconfig没有ip显示,是因为你的TCP/IP协议栈没问题,但网卡不存在,或者出错,或者禁用了!) 顺便说下推荐的网络检测,排错的顺序与方法: 1.ping 127.0.0.1 先检查TCP/IP协议栈是否正常 2.ping 本地ip 检查你网卡是否工作正常 3.ping 网关地址 检查和网关连接性 4.ping 远程网站 检查远程连接 netstat -h 网络相关的知识 16 来源: https://www.cnblogs.com/zhangjun1130/archive/2009/11/22/1608358.html

QQ通信原理概述

不羁的心 提交于 2020-03-10 04:31:38
一、登陆。 不管UDP还是TCP,最终登陆成功之后,QQ都会有一个TCP连接来保持在线状态。这个TCP连接的远程端口一般是80,采用UDP方式登陆的时候,端口是8000。因此,假如你所在的网络开放了80端口(80端口是最常用端口。。就是通常访问Web的端口,禁掉它的话,你的网络对你来说价值已经不大了),但没有屏蔽腾讯的服务器IP,恭喜你,你是可以登陆成功QQ的。 二、聊天消息通信。 采用UDP协议,通过服务器中转方式。因此,现在的IP侦探在你仅仅跟对方发送聊天消息的时候是无法获取到IP的。大家都知道,UDP协议是不可靠协议,它只管发送,不管对方是否收到的,但它的传输很高效。但是,作为聊天软件,怎么可以采用这样的不可靠方式来传输消息呢?于是,腾讯采用了上层协议来保证可靠传输:如果客户端使用UDP协议发出消息后,服务器收到该包,需要使用UDP协议发回一个应答包。如此来保证消息可以无遗漏传输。之所以会发生在客户端明明看到“消息发送失败”但对方又收到了这个消息的情况,就是因为客户端发出的消息服务器已经收到并转发成功,但客户端由于网络原因没有收到服务器的应答包引起的。 三、文件/自定义表情传送。 大家都知道,QQ可以传送文件,可以发送自定义表情。先说官方表情。官方表情实际发送的是命令字,而没有发送表情。客户端收到命令字后,会自动解释为对应的表情。因此,QQ2008正式版的客户端发出的新版表情

TCPClient关闭连接问题

爷,独闯天下 提交于 2020-03-09 18:25:09
TCPClient主动关闭连接后会残留TIME_WAIT状态,影响到下一次使用同一端口连接时会报“通常每个套接字地址(协议/网络地址/端口)只允许使用一次”异常,TIME_WAIT状态保持30S左右. 解决方法: 1、服务端关闭相应的TCP连接。 来源: https://www.cnblogs.com/fanu/p/12449973.html

TCP三次握手、四次挥手、滑动窗口、流量控制

左心房为你撑大大i 提交于 2020-03-09 18:18:27
在学习TCP协议之前,我们了解一下TCP头的报文格式 最上层是源端口号和目标端口号 接下来是包的序号和确认序号,这里的序号的作用就是维持TCP的顺序性和可靠性两种特性 接下来左边部分是当前的状态位,而大名鼎鼎的三次握手和四次挥手就是基于这个状态位实现的 右半部分是滑动窗口,主要是为了实现流量控制和拥塞控制 记住这个报文格式,接下来的内容都是基于这个的 #### 三次握手 首先我们从一个两个人打电话的例子来描述一下: A:哈喽,B。能听到么? B:你好,A。我能听到,你能听到么? A:太好了,我也能听到。我们来唠嗑么。 这个过程其实可以完美的解释三次握手的机制。我们知道,网络环境总是不安全的,只有至少经过这三次交互才能确认两方的发送和接受能力都没问题。 我们来看一下这几步分别确定了什么: 第一回合:当A将要跟B通信时,它会先发出去一个包。 第二回合:当B收到这个包的时候,就可以确定A的发送能力没问题,自己的接受能力没问题,它就会给A一个回复说:我收到了你的包了。 第三回合:A收到B的返回信息后就可以确定自己的发送和接受都没有问题,B的接受和发送能力都没有问题。但是这个时候B还不能确定自己的发送能力,所以只有当A再次发送一个包告诉B我收到你的包了才算是完成了这个握手。 三次握手除了上方的连接之外,还会牵扯到我们文章刚开始时说的包的序号和状态位,下面这个图就是一个完整的三次握手流程

基于UDP网络编程的服务器和客户端

风格不统一 提交于 2020-03-09 13:53:42
理解UDP UDP和TCP一样同属于TCP/IP协议栈的第二层,即传输层。 UDP套接字的特点 UDP的工作方式类似于传统的信件邮寄过程。寄信前应先在信封上填好寄信人和收信人的地址,之后贴上邮票放进邮筒即可。当然信件邮寄过程可能会发生丢失,我们也无法随时知晓对方是否已收到信件。也就是说信件是一种不可靠的传输方式,同样的,UDP所提供的也是一种不可靠的数据传输方式(以信件类比UDP只是通信形式上一致性,之前也以电话通信的方式类比了TCP的通信方式,而实际上从通信速度上来讲UDP通常是要快于TCP的;每次交换的数据量越大,TCP的传输速率就越接近于UDP)。因此,如果仅考虑可靠性,TCP显然由于UDP;但UDP在通信结构上较TCP更为简洁,通常性能也要优于TCP。 区分TCP和UDP最重要的标志是流控制,流控制赋予了TCP可靠性的特点,也说TCP的生命在于流控制。 UDP内部工作原理 与TCP不同,UDP不会进行流控制,其在数据通信中的作用如下图所示。可以看出,IP的作用就是让离开主机B的UDP数据包准确传递到主机A,而UDP则是把UDP包最终交给主机A的某一UDP套接字。UDP最重要的作用就是根据端口号将传输到主机的数据包交付给最终的UDP套接字。 数据包传输过程UDP和IP的作用 UDP的高效使用 TCP用于对可靠性要求较高的场景,比如要传输一个重要文件或是压缩包

TCP与UDP的区别究竟在哪

被刻印的时光 ゝ 提交于 2020-03-09 12:14:29
TCP的优点 : 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP的缺点 : 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。 UDP的优点 : 快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击…… UDP的缺点 : 不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。 基于上面的优缺点,那么: 什么时候应该使用TCP: 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用。 比如HTTP、HTTPS、FTP等传输文件的协议,POP

【转】Centos5.5 X86_64下安装PortSentry1.2防止恶意扫描 (2011-12-15 11:41)

☆樱花仙子☆ 提交于 2020-03-09 12:09:24
标签 : class 原创 normal 分类: Linux防火墙|系统安全 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 我在检查一台Centos5.5服务器的安全环境时,发现很多IP在恶意扫描此服务器的端口,本来想部署snort防入侵环境的,后来发现snort环境部署非常复杂,而以上的恶意扫描完全可以用PortSentry来实现。PortSentry是入侵检测工具中配置最简单、效果最直接的工具之一。PortSentry是Abacus工程的一个组成部分。Abacus工程的目标是建立一个基于主机的网络入侵检测系统,可以从http://www.psonic.com的到关于Abacus工程更为详细的信息。虽然PortSentry被cisco收购后不再开发,但丝毫不影响此软件的强大功能。PortSentry可以实时检测几乎所有类型的网络扫描,并对扫描行为做出反应。一旦发现可疑的行为,PortSentry可以采取如下一些特定措施来加强防范: 给出虚假的路由信息,把所有的信息流都重定向到一个不存在的主机; 自动将对服务器进行端口扫描的主机加到TCP-Wrappers的/etc/hosts.deny文件中去,我个人比较喜欢这种方式,因为线上许多环境并非都能打开iptables,这个选项也是PortSentry默认的功能;

网络协议

こ雲淡風輕ζ 提交于 2020-03-09 11:01:08
网络协议介绍 OSI(Open System Interconnect)七层模型:通信的特点是对等通信 从上往下分别为 应用层:为应用程序提供服务,此层应有的网络协议有HTTPS,HTTP,FTP等协议 实际公司A的老板就是我们所述的用户,而他要发送的商业报价单,就是应用层提供的一种网络服务,当然,老板也可以选择其他服务,比如说,发一份商业合同,发一份询价单,等等。 表示层:数据格式化,数据加密;表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别 由于公司A和公司B是不同国家的公司,他们之间的商定统一用英语作为交流的语言,所以此时表示层(公司的文秘),就是将应用层的传递信息转翻译成英语。同时为了防止别的公司看到,公司A的人也会对这份报价单做一些加密的处理。这就是表示的作用,将应用层的数据转换翻译等。 会话层:建立,管理,维护会话,会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。 会话层的同事拿到表示层的同事转换后资料,(会话层的同事类似公司的外联部),会话层的同事那里可能会掌握本公司与其他好多公司的联系方式,这里公司就是实际传递过程中的实体。他们要管理本公司与外界好多公司的联系会话。当接收到表示层的数据后,会话层将会建立并记录本次会话,他首先要找到公司B的地址信息

面试题:UDP&TCP的区别

人走茶凉 提交于 2020-03-09 09:46:08
相同点 UDP协议和TCP协议都是传输层协议。 TCP(Transmission Control Protocol,传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。 UDP(User Data Protocol,用户数据报协议)是一个简单的面向数据报的运输层协议。它不提供可靠性,只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达目的地。由于UDP在传输数据报前不用再客户和服务器之间建立一个连接,且没有超时重发等机制,所以传输速度很快。 不同点 报头不同 特点不同 协议不同 UDP 报头 UDP数据报最大长度64K(包含UDP首部),如果数据长度超过64K就需要在应用层手动分包,UDP无法保证包序,需要在应用层进行编号。 特点 无连接 :知道对端的IP和端口号就直接进行传输, 不需要建立连接。 不可靠 :没有确认机制, 没有重传机制; 如果因为网络故障该段无法发到对方, UDP协议层也不会给应用层返回任何错误信息。 面向数据报 :不能够灵活的控制读写数据的次数和数量,应用层交给UDP多长的报文, UDP原样发送, 既不会拆分, 也不会合并。 数据收不够灵活,但是能够明确区分两个数据包,避免粘包问题。 协议

网络编程释疑之:TCP半开连接的处理

不问归期 提交于 2020-03-09 09:13:08
熟悉基于TCP协议进行linux高性能、高并发服务端编程的朋友肯定应该知道每个文件描述符及其所占的资源对并发量的影响。在这种7*24甚至*365不间断运行的服务器上,一个描述符被浪费,两个被浪费...如果被浪费的多了,那还何谈高并发,高性能。除去文件描述被正常占用的情况外,是什么导致了我们可用的文件描述符越来越少呢? 什么是半开连接? 当客户端与服务器建立起正常的TCP连接后,如果客户主机掉线(网线断开)、电源掉电、或系统崩溃,服务器进程将永远不会知道(通过我们常用的select,epoll监测不到断开或错误事件),如果不主动处理或重启系统的话对于服务端来说会一直维持着这个连接,任凭服务端进程如何望穿秋水,也永远再等不到客户端的任何回应。这种情况就是半开连接,浪费了服务器端可用的文件描述符。 如何处理? 熟悉套接字通用选项的朋友一定已经有了想法。TCP套接字不是有个保持存活选项SO_KEEPALIVE嘛,如果在两个小时之内在该套接字的任何一个方向上都没数据交换,TCP就自动给对端发送一个保持存活探测分节,如果此TCP探测分节的响应为RST,说明对端已经崩溃且已经重新启动,该套接字的待处理错误被置为ECONNRESET,套接字本身则被关闭。如果没有对此TCP探测分节的任何响应,该套接字的处理错误就被置为ETIMEOUT,套接字本身则被关闭。 确实