TCP/IP协议学习

  • 概念

   TCP提供一种面向连接的、可靠的字节流服务。

   TCP/IP一般被认为是四层协议:

                                                          TCP/IP协议学习_第1张图片

  1. 应用层:处理特定的应用程序细节。
  2. 传输层:主机间的应用程序提供端到端的通信,包括TCP(传输控制协议)和UDP(用户数据报协议)。
  3. 网络层:网络层的协议包括IP协议、ICMP协议(Internet互联网控制报文协议)、IGMP协议(Internet组管理协议)。
  4. 链路层:主要作用是:1)为IP模块发送和接受IP数据段;2)为ARP模块发送ARP请求和接受应答;3)为RARP模块发送RARP请求和接受RARP应答。
  • TCP特性

  1. 面向连接的、可靠的
  2. 全双工协议、半关闭
  3. 错误检查
  4. 将数据打包成端,排序
  5. 确认机制
  6. 数据恢复重传
  7. 流量控制,滑动窗口
  8. 拥塞控制,慢启动和拥塞避免算法
  • TCP包头                               

                                                         TCP/IP协议学习_第2张图片

  1.  源端口(Source Port):16位的源端口其中包含初始化通信的端口。源端口和源IP地址的作用是
    标示报文的返回地址。
  2. 目的端口(Destination port):16位的目的端口域定义传输的目的。这个端口指明报文接收计算
    机上的应用程序地址接口。
  3. 序列号(序列码,Sequence Number):32位
  4. 应答号(Acknowledgment Number):32位的序列号由接收端计算机使用,重组分段的报文成最初形式。,如果设置了ACK控制位,这个值表示一个准备接收的包的序列码。
  5. 数据偏移量(HLEN):4位包括TCP头大小,指示何处数据开始
  6. 保留(Reserved):6位值域,这些位必须是0。为了将来定义新的用途所保留。
  7. 标志(Code Bits):6位标志域。表示为:紧急标志、有意义的应答标志、推、重置连接标志、同步序列号标志、完成发送数据标志。按照顺序排列是:URG、ACK、PSH、RST、SYN、FIN。
  • TCP三次握手

      三次握手,是指建立一个TCP连接时,需要客户端和服务器共发送3个包。

                                                        TCP/IP协议学习_第3张图片

  1. 建立连接时,客户端发送SYN包(SYN=J)到服务器,并进入SYN_SEND状态,等待服务器确认;
  2. 服务器收到SYN包,必须确认客户的SYN(ack=J+1),同时自己也发送一个SYN包(SYN=K),此时服务器进入SYN_RECV状态;
  3. 客户端收到服务器SYN+ACK包,向服务器发送确认包ACK(ack=K+1),此时发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
  •  TCP四次挥手

       客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。客户端发送FIN后,进入终止等待状态,服务器收到客户端连接释放报文后,立即给客户端发送确认;服务器进入CLOSE_WAIT状态,此时服务器请求高层应用进程断开与客户端的连接,此时进入“半关闭状态”,此时客户端不可用发送给服务器,服务器可以发送给客户端;如果服务器没有数据发送给客户端,其应用程序就通知TCP释放连接,然后发送给客户端连接释放,并等待确认;客户端发送确认后,进入TIME_WAIT状态,TCP连接还没有释放,经过等待计时器设置2MSL后进入CLOSE状态。

                                                       TCP/IP协议学习_第4张图片

  1.  客户端发送一个FIN,用来关闭客户端到服务器的数据传送,然后等待服务器的确认,FIN=1;
  2.  服务器收到这个FIN,它发送一个ACK,确认ACK为收到的序号+1;
  3.  关闭服务器到客户端的连接,发送一个FIN给客户端,;
  4.  客户端收到FIN后,并发回一个ACK报文确认,并将确认序号ACK设置为收到+1。

 

你可能感兴趣的:(TCP/IP协议)