TCP编程

TCP:是一种面向连接的,可靠的基于字节流的传输层通信协议。

工作过程:
建立连接:通过三次握手建立连接:

第一次握手:建立连接时,客户端发送SYN包(SEQ=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=x+1),同时自己也发送一个SYN包(SEQ=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=y+1),此包发送完毕,客户端和服务器进入Established状态,完成三次握手。

传输数据:
  • 一旦通信双方建立了TCP链接,连接中的任何一方都能向对方发送数据和接收对方发来的数据。TCP协议负责把用户数据(字节流)按一定的格式和长度组成多个数据报进行发送,并在接收到数据报之后按分解顺序重新组装和恢复数据。
  • 利用TCP传输数据时,数据是以字节流的形式进行传输的。客户端与服务器建立连接后,发送方需要先将发送的数据转换为字节流,然后将其发送给对方。发送数据时,程序员可以通过程序不断地将数据流陆续写入TCP的发送缓存中,然后TCP自动从发送缓存中取出一定量的数据,将其组成TCP报文段逐个发送给IP层,再通过IP层之下的网络接口发送出去。接收端从IP层接收TCP报文段后,将其暂时保存在接受缓存中,这是程序员就可以通过程序依次读取接受缓存中的数据,从而达到相互通信的目的。
终止连接:

建立一个连接需要三次握手,而终止一个连接需要经过四次握手,这是由于TCP的半关闭(half-close)造成的。
关闭TCP连接

TCP的主要特点:

1,TCP是面向连接的协议;
2,端到端的通信。每个TCP连接只能有两个端点,而且只能一对一通信,不能一点对多点直接通信;
3,高可靠性。通过TCP连接传送的数据,能够保证数据无差错,不丢失,不重复地准确到达接收方,并且保证数据到达的顺序与其发出的顺序相同;
4,全双工方式传输;
5,数据以字节流的方式传输;
6,传输的数据无消息边界。


20150305

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值