TCP/IP详解学习笔记--TCP的基本概念
2015-07-27 11:05
513 查看
1.TCP的服务
虽然TCP和UDP最后都会通过IP层传输,但是二者却为用户提供完全不同的服务,TCP提供的是面向连接的,可靠的字节流服务 面向连接意味着俩个使用TCP的应用在彼此交换数据之前必须先建立一个TCP连接。可以用打电话比喻TCP的连接,要想俩个人通话,首先一方要拨通另一方的电话,等待另一方接通电话之后才可以通话,TCP连接只有俩方能通话,这和UDP完全不同
TCP通过如下方式来提供可靠的服务
.应用数据被分成TCP认为最合适的数据块
.当TCP发出一个段时,它启动一个定时器,等待目的端确认接收这个段,如果不能及时收到确认将重发这个报文段
.当TCP收到来自TCP另一端的数据时,它将发送一个确认
.TCP将保持它首部和数据的检验和,这是个端到端的检验和,目的是检验数据在传输过程中有没有变化
.如果有必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层
.TCP接收端必须丢掉重复的数据
.TCP双方每一端都有固定大小的接收缓冲空间,TCP根据此空间提供流量控制
2.TCP的首部结构
16位源端口号 | 16位目的端口号 |
---|---|
32位序号 | 32位确认序号 |
4位首部长度 | 保留6位 |
16位窗口大小 | 16位校验和 |
16位紧急指针 | 选项 |
数据 |
(2)序号用来标识从TCP发端向收端发送的数据字节流,它表示在这个报文段中的第一个数据字节(其实说白了,它就是用来标识这个数据段的)
(3)确认序号包含发送确认的一端所期望收到的下一个序号,因此确认序号因该是上次已成功接收数据段序号加1只有ACK为1时,确认序号才有效
(4)首部长度给出首部中32bit字的数目
(5)6位标志他们中有多个可以被设为1,具体用法如下:
bit位 | 具体描述 |
---|---|
UGR | 紧急指针 |
ACK | 确认序号有效 |
PSH | 接收方应尽快将这个报文段交给应用层 |
RST | 重建连接 |
SYN | 同步序号用来发起一个连接 |
FIN | 发端完成任务 |
(7)最长见的可选字段是最长报文大小,又称MSS,通常在通信的第一个报文段指明这个
3.基本流程总结
TCP是一种提供可靠的面向连接的字节流运输层服务,TCP将用户数据打包构成报文段,它发送数据后,产生一个定时器,另一端对收到的数据确认,对失序的数据重新排序,丢弃重复数据,通过窗口大小提供端到端的流量控制,并计算和验证一个强制性的端到端的校验和相关文章推荐
- Linux strace命令 http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html
- Android使用http协议的GET和POST方法!!!
- 关于httpHeader和httpbody用法总结
- 半同步半异步高性能网络编程
- Android检测网络状态,判断当前网络是否可用
- 网络数据分类
- 分布式网络架构
- hdu 5294 - Tricks Device(2015 Multi-University Training Contest 1 )最短路+网络流
- ubuntu无法连接网络
- HDU 3549 基础网络流EK算法 Flow Problem
- HTTP协议详解
- 学习脚步--- HttpClient4.0
- http header 详解
- poj 1149 PIGS 【网络流经典建模】【求最大流】
- Android 模拟 Http GET 请求
- 使用xUtils-master中的HttpUtils进行断点续传
- 关于网络图片的采样与压缩保存
- android-async-http-master - 网络连接
- Android模拟Http POST 请求
- ※版本管理※=>☆SVN工具=>※解决地域麻烦※№→搭建自己的网络SVN (SourceForge 免费) [转]