网络编程学习_TCP协议

来源:互联网 发布:全民神仙官网通知 编辑:程序博客网 时间:2024/05/22 01:35

一,TCP的主要功能

TCP主要解决了网络的确认,超时,重传,和流量控制

二,TCP的主要特点

  1. 面向连接
  2. 流式数据,齐保文内容是无边际的
  3. 全双工
三,三次握手与四次挥手


即连接的建立至少发送3个消息,终止一般需要4个(被动关闭端的ACK和FIN可能合并), 可以看到:

  1. 每个非ACK包都需要一个ACK进行确认
  2. ACK可以附在其他消息上,这称为"捎带"
  3. 被动关闭端收到FIN后,需要一段时间进行最后的处理工作, 其ACK和FIN一般是分开的,,所以会比建立时多一次
四, TCP状态
TCP有多达11种状态,其状态转换图如下:


其中关闭是CLOSED,正常工作是ESTABLISHED, 其他9中状态分别标记了连接建立和终止的各个步骤
TIME_WAIT: 这个状态是说主动关闭方在发出最后一条ACK消息后,还要等待一段时间(2MSL,最长分节生命期)后才能关闭,这样做有两点原因:
  1. 处理最后一个ACK丢失的情况
  2. 确保所有消息在网络中消逝,以避免建立化身连接(即两端IP/PORT都一样的连接)时,旧连接消息的干扰
五,几个影响IP数据报大小的概念
  1. MTU: 这是数据链路层的概念,以太网中一般是1500字节,即包括IP头,TCP/UDP头和数据在内不能超过1500字节
  2. MSS: 这是TCP概念,最大分节大小, 一般为 MTU - IP头 - TCP头,  以太网中即1500-20-20=1460字节
  3. 缓冲区大小: 缓冲区影响到这两个地方:
  • 缓冲区用来分片和重组,因此你不能发送大于缓冲区的消息(它们将无法重组)
  • 当你进行write操作时,只是将数据复制到缓冲区中, 如果满了则会阻塞
  • 最大为65535,最小为576
0 0
原创粉丝点击