文档介绍:传输协议 TCP/IP 三次握手,建立连接四次挥手,断开连接层次结构 TCP/IP OSI 应用层应用层表示层会话层主机到主机层( TCP )(又称传输层) 传输层网络层( IP)(又称互联层)网络层网络接口层(又称链路层) 数据链路层物理层 TCP 三次握手所谓三次握手(Three-way Handshake) ,是指建立一个 TCP 连接时,需要客户端和服务器总共发送 3个包。三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号并交换 TCP 编程中,客户端执行 connect() 时。将触发三次握手。?第一次握手: 客户端发送一个 TCP 的SYN 标志位置 1 的包指明客户打算连接的服务器的端口,以及初始序号 X,保存在包头的序列号(Sequence Number) 字段里。?第二次握手: 服务器发回确认包(ACK) 应答。即 SYN 标志位和 ACK 标志位均为 1 同时,将确认序号(Acknowledgement Number) 设置为客户的 +1 。?第三次握手. 客户端再次发送确认包(ACK) SYN 标志位为 0,ACK 标志位为 1. 并且把服务器发来 ACK 的序号字段+1, ISN 的+1 SYN 攻击在三次握手过程中,服务器发送 SYN-ACK 之后,收到客户端的 ACK 之前的 TCP 连接称为半连接(half-open connect). 此时服务器处于 Syn_RECV 状态. 当收到 ACK 后,服务器转入 ESTABLISHED ,向服务器不断地发送syn 包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的 SYN 包将长时间占用未连接队列,正常的 SYN 请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。 Syn 攻击是一个典型的 DDOS 攻击。检测 SYN 攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源 IP 地址是随机的,基本上可以断定这是一次 SYN 下可以如下命令检测是否被 Syn stat -n -p TCP | grep SYN_RECV 一般较新的 TCP/IP 协议栈都对这一过程进行修正来防范 Syn 攻击,修改 tcp 协议实现。主要方法有 SynAttackProtect 保护机制、SYN cookies 技术、增加最大半连接和缩短超时时间等. 但是不能完全防范 syn 攻击。 TCP 四次挥手 TCP 的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake) 。客户端或服务器均可主动发起挥手动作,在socket 编程中,任何一方执行 close() 操作即可产生挥手操作。参见 wireshark 抓包,实测的抓包结果并没有严格按挥手时序。我估计是时间间隔太短造成。 UDP TCP/IP 与UDP 区别 TCP/IP 协议时面向连接,UDP 面向非连接 TCP/IP 编程 ServerSocket,Socket Http 详解 HTTP 协议详解之请求篇 http 请求由三部分组成,分别是:请求行、消息报头、请求正文 1、请求行以一个方法符号开头,以空格分开,后面跟着请求的 URI 和协议的版本,格式如下: Method Request-URI HTTP-Version CRLF 其中 Method 表示请求方法; Request-URI 是一个统一资源标识符; HTTP-Version 表示请求的HTTP 协议版本; CRLF 表示回车和换行(除了作为结尾的 CRLF 外,不允许出现单独的 CR 或LF字符)。请求方法(所有方法全为大写)有多种,各个方法的解释如下: GET 请求获取 Request-URI 所标识的资源 POST 在Request-URI 所标识的资源后附加新的数据 HEAD 请求获取由 Request-URI 所标识的资源的响应消息报头 PUT 请求服务器存储一个资源,并用 Request-URI 作为其标识 DELETE 请求服务器删除 Request-URI 所标识的资源 TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断 CONNECT 保留将来使用 OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求应用举例: GET 方法:在浏览器的地址栏中输入网址的方式访问网页时,浏览器采用 GET 方法向服务器获取资源, eg:GET / HTTP/ (CRLF) POST 方法要求被请