1. TCP和UDP有什么区别??
?? ?(1)TCP是一个面向连接的可靠的传输层协议,UDP是面向无连接不可靠的传输层协议? ?? ? ?? ?(2)TCP速度慢,可靠,UDP速度快,容易丢失数据? ?? ? ?? ?(3)TCP用的是SOCK_STREAM流式套接字,UDP用的是SOCK_DGRAM数据报套接字
2. ?为什么TCP安全可靠???
?? ?(1)三次握手(发送在连接的时候),四次挥手(发生在断开连接的时候)? ?? ?(2)重传确认 ?? ?
?? ?(1)TCP在连接的时候,需要三次握手(请详细解释一下三次握手过程) ?? ??? ?connect ---- accept ?? ??? ?三次握手 连接的时候用的是SYN位,确认的时候用的是ACK位 ?? ??? ? ?? ??? ?syn --> 发送序号? ?? ??? ?ack --> 确认序号 ?? ? ?? ??? ?第一次握手: 客户端发送的序号假设是200,将SYN置1,代表连接请求 ?syn = 200 (书上的syn = j) ?? ??? ? ?? ??? ?第二次握手: 服务器端发送的序号假设是500,将SYN置1和ACK置1,代表确认 syn = 500(syn = k) ?ack = 201(ack=j+1) ?? ? ?? ??? ?第三次握手: 客户端给服务器应答,将ACK置1,确定要连接 发送序号 syn = 201, ack = 501(ack = k+1) ?? ??? ? ?? ??? ?什么ACK攻击??? ?? ??? ? ?? ??? ?发生在第三次握手的时候,第二次握手之后,服务器需要得到客户端的一个应答,来确认连接服务器,此时 ?? ??? ?客户端,不进行第三次握手,不给ACK确认,所以造成服务等待,浪费资源 ?? ??? ? ?? ??? ? ?? ?(2)?? ?TCP在断开连接的时候,需要四次挥手(请详细解释一四次挥手过程) ?? ??? ??? ? ?? ??? ?断开连接的时候 close()函数,用的FIN位 和 ACK位 ?? ??? ??? ? ?? ??? ?第一次挥手: 发起端将FIN置1,请求断开的请求 假设 syn = 200? ?? ??? ?第二次挥手: 应答端将ACK置1,允许断开连接 ?syn = 500 ?ack = 201? ?? ??? ?第三次挥手: 应答端将FIN置1,请求同时断开连接, sys = 501? ?? ??? ?第四次回收: 发起端将ACK置1,允许同时断开 ?syn = 201 ack = 502 ?? ??? ? ?? ?(3)重传确认 ?? ?
重点
1.3 tcp连接的过程(accept 和 connect怎么搭配的)? ??
1.4 tcp 4次挥手
练习1: ?客户端连接服务器时发送(? ?c? )包,服务器收到客户端连接请求发送(d? ? )包
?? ?A ?ACK ? ?B ? FIN ? ? C ?SYN ? ? D SYN+ACK
练习2: 客户端和服务器的初始序号为(2000, 4000), 那么客户端SYN包序号为( a ), 服务器的SYN包序号为(? ?c)
?? ?//服务器端第二次握手的确认序号(B) 客户端第三次握手的确认序号(D) ? ?? ?A 2000 ? ?B 2001 ? ? C 4000 ? D 4001 ?
|