TCP/IP学习笔记:TCP传输控制协议(一)
1 TCP的服务
尽管TCP和UDP都使用相同的网络层(IP),TCP却向用户提供一种面向连接的,可靠地字节流服务。两个使用TCP的应用,在彼此交换数据之前必须先建立一个TCP连接,在一个TCP连接中,仅有两方进行通信。TCP通过以下方式来提供可靠性:
(1)应用数据被分割成TCP认为最合适发送的数据块。
(2)当TCP发送一个段后它启动一个定时器,等待目的端确认收到这个报文段(超时重传)。
(3)当TCP收到发自TCP连接另一端的数据,它将发送一个确认。
(4)TCP将保持它首部和数据的检验和(端到端)。
(5)TCP报文段通过IP数据传输,可能出现失序,因此TCP会对收到的数据进行重新排序,将收到的正确顺序交给应用层。
(6)TCP将丢弃重复的数据
(7)TCP还能提供流量控制。TCP的接收端只允许另一发送接收端缓冲区所能接纳的数据,防止缓存区溢出。
另外TCP不提供对字节流的解释,对字节流的解释由TCP连接双方的应用层解释。
2 TCP首部
TCP数据被封装在一个IP数据报中:
TCP首部格式。如果不计算任选字段,通常是20个字节。
源端和目的端端口号:用于寻找发送端和接收端的应用进程。这2个值加上IP首部中的源端和目的端的IP地址构成唯一的确定的一个TCP连接。
序号:用来标示从TCP发送端到接收端发送的数据字节流,表示在这个报文段中的第一个数据字节(无符号数,到达2^32-1后又从0开始)当建立一个TCP新的连接时,SYN标志变1。序号字段包含由这个主机选择的该连接的初始序号ISN,该主机要发送数据的第一个字节序号为这个ISN加1,因为SYN标志需要消耗一个序号。每个传输的字节都被计数,确认序号包含发送端确认的一端所期望手下的下一个序号。因此确认序号应该上次成功收到的数据字节序号加1。只有ACK标志为1的确认序号字段才有效。
首部长度:占四位,表示首部长度为多少个4字节,因此首部最大为60字节
六个标志比特:
URG:紧急指针有效
ACK:确认序号有效
PSH:接收方应该尽快将这个报文交给应用层。
RST:重建连接
SYN:同步序号用来发起一个连接。
FIN:发送端完成发送任务
窗口大小:16位,最大65535字节。TCP的流量控制由每一端通过申明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值正是接收端期望接收的字节。
检验和:覆盖整个TCP报文段,发送端计算,接收端验证(需要加上伪首部)。
TCP/IP学习笔记:TCP传输控制协议(一)的更多相关文章
- tcp/ip学习笔记-TCP
tcp/ip学习笔记-TCP 彭会锋 报文发送采用的是tcp_output函数,
- TCP/IP 中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议
原文地址:http://hi.baidu.com/albyuyrgqgbbhoq/item/65006d2d002ab33195f62ba1 TCP/IP(Transmission Control P ...
- TCP/IP学习笔记1--概述,分组交换协议
1.TCP/IP 互联网是由许多独立发展的网络通信技术融合而成的,能够使它们不断融合并实现统一的正式TCP/IP技术,TCP/IP使通信协议的统称. TCP/IP协议模型(Transmission C ...
- TCP/IP学习笔记2--协议分层与OSI参考模型
协议的分层: 为解决不同计算机之间的通信,ISO(International Organization for Standards)指定了一个国际标准OSI(Open Systems Intercon ...
- TCP/IP学习笔记(3)-IP、ARP、RARP协议
这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据 ...
- TCP/IP学习笔记(5)------IP选路
静态IP选路 一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统路由表. D ...
- TCP/IP学习笔记(3)----IP,ARP,RARP协议
把这三个协议放到一起学习是因为这三个协议处于同一层(网络层协议),ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP ...
- TCP/IP学习笔记17--TCP-- 窗口控制 重发控制 流控制
事业无穷年 -- 韩愈 利用窗口控制提高速度: TCP传输数据是,以一个段为单位(每次发送一个数据包),每发一个段需要一次确认应答,这样就难免存在这样的缺点:包的往返时间越长,通信性能就越低. 为解决 ...
- TCP/IP学习笔记(2)-数据链路层
数据链路层有三个目的: 为IP模块发送和接收IP数据报. 为ARP模块发送ARP请求和接收ARP应答. 为RARP发送RARP请求和接收RARP应答 ip大家都听说过.至于ARP和RARP,ARP叫做 ...
随机推荐
- Day3---------Linux操作系统目录结构
一.Linux系统文件树状结构 "/" 根目录 "." 当前目录 .. 父目录,既上一层目录 pwd 显示当前目录路径 ls. = ls = ls/ 显示当前目 ...
- 在Node应用中避免“Dot Hell”
转载自:http://blog.leapoahead.com/2015/09/03/prevent-node-require-dot-hell/ 在Node应用中,我们使用require来加载模块.在 ...
- EF Core利用Transaction对数据进行回滚保护
What? 首先,说一下什么是EF Core中的Transaction Transaction允许以原子方式处理多个数据库操作,如果事务已提交,则所有操作都应用于数据库,如果事务回滚,则没有任何操作应 ...
- 解决exlicpe以debug模式启动或运行速度非常慢的问题
该问题可能是由于eclipse和tomcat的交互而产生的, 在以debug模式启动tomcat时,发生了读取文件错误, eclipse自动设置了断点,导致tomcat不能正常启动. 解决方法如下:以 ...
- JavaOOP-集合框架
1.Java集合框架包含的内容 Java集合框架为我们提供了一套性能优良,使用方便的接口和类,它们都位于在java.util包中. Collection 接口存储一组不唯一,无序的对象. List 接 ...
- SpringBoot03 项目热部署
1 问题 在编写springBoot项目时,经常需要修改代码:但是每次修改代码后都需重新启动,修改的代码才会生效 2 这么实现IDEA能够像Eclipse那样保存过后就可以自动进行刷新呢 将sprin ...
- 02_LInux的目录结构_我的Linux之路
前两节已经教大家怎么在虚拟机安装Linux系统 这一节我们来学习Linux的目录结构,讲一下linux的整个系统架构,提前熟悉一下Linux 在Linux或Unix系统中有一个非常重要的概念,就是一切 ...
- 一台windows主机上运行2个tomcat
为了运行2个不同的项目,需要在一台机上运行2个tomcat,但是发现运行第二个tomcat时,总会加载第一个tomcat中的项目,也就是实际运行的是第一个tomcat 所以需要做如下配置: 1.修改第 ...
- alpha-咸鱼冲刺day8-紫仪
总汇链接 一,合照 emmmmm.自然还是没有的. 二,项目燃尽图 三,项目进展 正在进行页面整合.然后还有注册跟登陆的功能完善-- 四,问题困难 数据流程大概是搞定了.不过语法不是很熟悉,然后还有各 ...
- 课后练习:C语言实现Linux命令——od
课后练习:C语言实现Linux命令--od --------CONTENTS-------- 题目详情与分析 设计思路 遇到的问题及解决 待实现的设想与思考 学习反思与感悟 附1:myod.c「1.0 ...