什么是TCP/IP协议
TCP/IP通信协议是目前最完整、最被广泛支持的通信协议,它可以让不同网络架构、不同操作系统的计算机之间通信,是Internet的标准通信协议。
TCP的介绍
TCP也叫传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
UDP
UDP是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP 协议基本上是IP协议与上层协议的接口。UDP协议适用端口分别运行在同一台设备上的多个应用程序。
TCP端口和UDP端口。由于TCP和UDP 两个协议是独立的,因此各自的端口号也相互独立,比如TCP有235端口,UDP也 可以有235端口,两者并不冲突。
常见端口号 :
80端口分配给WWW(HTTP)服务;
21端口分配给FTP服务
22端口分配给Ssh服务
23端口分配给( 邮件传输协议)Telnet (远程登录)服务
25端口分配给SMTP服务
110端口分配给P0P3服务
111端口分配SUN公司的( 远程过程调用 )RPC服务所有端口,常见RPC服务有rpc.mountd、NFS、rpc.statd、rpc.csmd、rpc.ttybd、amd等
119端口分配给NEWS新闻组传输协议
135端口分配给DCOM服务
161端口分配给SNTP服务
TCP 22=远程登录协议
TCP 23=远程登录(Telnet),Tiny Telnet Server (= TTS)
TCP 25=电子邮件(SMTP)
TCP 49=主机登录协议
TCP 70=Gopher服务
TCP 80=超文本服务器(Http),Executor,RingZero
TCP 102=消息传输代理
TCP 109=Pop2
TCP 110=电子邮件(Pop3),ProMail
TCP 115=简单文件传输协议
TCP 156=SQL服务器
TCP 177=X Display管理控制协议
TCP 179=Border网关协议(BGP)
TCP 443=安全服务(HTTPS)
TCP 546=DHCP Client
TCP 547=DHCP Server
TCP 569=MSN
TCP 990=ssl加密
TCP 1703=Exloiter 1.1
TCP 1723=VPN 网关(PPTP)
TCP 4000=腾讯QQ客户端
TCP 5000=WindowsXP服务器
UDP 1701=VPN网关(L2TP)
**HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080
HTTPS服务器,默认的端口号为443/tcp 443/udp;**
动态端口(Dynamic Ports)
动态端口的范围是从49152到65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。
注册端口
端口1024到49151,分配给用户进程或应用程序。这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序。这些端口在没有被服务器资源占用的时候,可以用用户端动态选用为源端口。
端口号可分为3大类
公认端口(WellKnownPorts):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。
注册端口(RegisteredPorts):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。
动态和/或私有端口(Dynamicand/orPrivatePorts):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。
什么情况下tcp进入time_wait?
当关闭一个 socket 连接时,主动关闭一端的 socket 将进入TIME_WAIT状态,而被动关闭一方则转入CLOSED状态。
具体过程如下:1、 客户端发送FIN报文段,进入FIN_WAIT_1状态。2、 服务器端收到FIN报文段,发送ACK表示确认,进入CLOSE_WAIT状态。3、 客户端收到FIN的确认报文段,进入FIN_WAIT_2状态。4、
服务器端发送FIN报文端,进入LAST_ACK状态。5、 客户端收到FIN报文端,发送FIN的ACK,同时进入TIME_WAIT状态,启动TIME_WAIT定时器,超时时间设为2MSL。6、 服务器端收到FIN的ACK,进入CLOSED状态。7、
客户端在2MSL时间内没收到对端的任何响应,TIME_WAIT超时,进入CLOSED状态。
一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手:(如下)
TCP/IP和OSI协议
OSI:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层
TCP/IP:网络接口层,互连网络层,传输层,应用层
TCP三次握手(创建 OPEN)
客户端发起一个和服务创建TCP链接的请求,这里是SYN(J)
服务端接受到客户端的创建请求后,返回两个信息: SYN(K) + ACK(J+1)
客户端在接受到服务端的ACK信息校验成功后(J与J+1),返回一个信息:ACK(K+1)
服务端这时接受到客户端的ACK信息校验成功后(K与K+1),不再返回信息,后面进入数据通讯阶段
数据通讯
客户端/服务端 read/write数据包
TCP四次握手(关闭 finish)
客户端发起关闭请求,发送一个信息:FIN(M)
服务端接受到信息后,首先返回ACK(M+1),表明自己已经收到消息。
服务端在准备好关闭之前,最后发送给客户端一个 FIN(N)消息,询问客户端是否准备好关闭了
客户端接受到服务端发送的消息后,返回一个确认信息: ACK(N+1)
最后,服务端和客户端在双方都得到确认时,各自关闭或者回收对应的TCP链接。
详解 TCP/IP 协议 :https://mp.weixin.qq.com/s/nzLhnAfno5WwMTnldLMVWw
HTTP协议中POST、GET、HEAD、PUT等请求方法及相应值得含义: https://mp.weixin.qq.com/s/_X-eqZHlWVX3QA_evR8aRA
TCP/IP 详解 :http://techlog.cn/article/list/10182929