TCP 协议学习小结

TCP 传输控制协议(Transmission Control Protocal):

(1)TCP协议概括介绍:

TCP协议是传输层的通信协议,有同学或许不理解了,IP是网络层的传输协议,这个传输层和网络层有什么区别呢?依我之见,网络层是用来寻找网络中的主机的,通过IP地址是可以锁定唯一主机的。我们通常的通信,是一个进程和另一个进程之间的通信,而进程是依附于主机的。故在一个进程到另一个进程的通信流程可简化为:进程A——主机A——主机B——进程B。而传输层协议就是实现主机A——主机B之间的通信的。但是一个主机一般会有很多进程,那么如何将信息传递到某一具体进程呢?这就是传输层的功能了!一般进程都会占用端口的,而传输层就是通过TCP报文段中首部的“目的端口”来寻找目的进程的端口号的。也正是通过这个端口号,主机B才能顺利正确地找到进程B。好了,言归正传。

先说说TCP协议的特点吧:

A:TCP是面向连接的传输层协议:也即是说TCP通信之前,是需要先建立稳定的连接的,这也正是我们所谓的“三次握手”,建立好通道之后,然后才能进行通信,也正因此,TCP协议是比较稳定的,不会发生如UDP一般的丢包现象。

B:一条TCP连接是只能有两个端点的。

C:TCP通信时全双工的:即支持两个端口直接通信进行发送和接收数据,与此相辅的是两端都有接收和发送的缓存空间。(TCP通信时先把数据放到发送缓存空间里,待缓存空间填满(一般情况下),便会发送数据)。

D:TCP通信时面向字节流的:即在发送数据的时候是分段活分片传输,但是本质上都是字节流。比如你发了10个报文段,但是在接收端可能只有4个报文段,这中间就有一种转换关系:数据段——字节流——数据段。

我们刚才说一条TCP连接只能有两个端点,在这里,端点是何含义呢?
此端点非主机,非主机IP,非进程,非传输层协议端口,而是套接字(socket),也叫插口。那什么叫套接字呢?所谓套接字即端口号拼接到IP地址即是。

套接字:点分十进制的IP地址后面加上端口号,中间用冒号或逗号分隔开来。套接字socket = (IP地址:端口号)= (IP:PORT)

如:192.168.1.45:5546

而每条TCP连接有两个端点,所以TCP连接 ::= {socket1,socket2} = {(IP1:PORT1),(IP2:PORT2)}        注:::= 表示”相当于“的意思。

(2)TCP可靠传输原理

什么情况下一定回事可靠传输呢?

通信的基本条件是信源——信道——信宿。故当信源发出数据之后,如果信道稳定,信宿处理能力够强,基本上是不会出错的。但是现实情况往往无法满足的。但是我们可以当数据发生错误时,使得信源重传;当信宿来不及处理数据的时候,可以告诉信源慢点发送数据。

时间: 2024-10-18 05:15:43

TCP 协议学习小结的相关文章

TCP协议学习笔记(一)首部以及TCP的三次握手连接四次挥手断开

TCP协议是一种面向连接的.可靠的流协议. 流即不间断的数据结构.这样能够保证接收到数据顺序与发送相同.但是犹如数据间没有间隔,因此在TCP通信中,发送端应用可以在自己所要发送的消息中设置一个标示长度或间隔的字段信息. 由于TCP为应用提供可靠传输,所以需要对数据传输时数据破坏.丢包.重复以及乱序问题有充分的控制能力.同时TCP协议作为面向连接的协议,只有确认对端存在才会发送数据. TCP通过检验和.序列号.确认应答.重发控制.连接管理.窗口控制等实现可靠传输. 当传输层采用TCP协议进行通信时

Http协议学习小结

本文是对这几天学习Http协议的基础知识的小结.内容包括了Http协议的原理,Http请求信息和Http响应信息以及Http协议状态码等内容. 1.Http协议的基本原理:有客户端向服务器发送请求,服务端对请求处理,对客户端进行相应.如下图所示. 图1 Http协议原理图 下面给出一个简单的请求和响应的示例代码: 客户端请求: GET / HTTP/1.1 Host: localhost Accept: text/html Accept-Language: en-us Accept-Encodi

TCP协议学习总结(下)

在前两边TCP学习总结中,也大概地学习了TCP的整个流程,但许多细节中的细节并没有详细学习,例如超时重传问题,每次瓶颈回归慢启动效率问题以及最大窗口限制问题等.本学习篇章最要针对这些细节中的细节进行学习.TCP的复杂很多时候就是细节太多了,需要考虑许多的场景并利用许多复杂的算法和启动异步线程定时处理这些问题,对于每一个连接,TCP管理4个不同的定时器,分别是: 1).重传定时器使用于当希望收到另一端的确认: 2).坚持定(persist)时器使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口

TCP协议学习记录 (三) Ping程序 RR选项 记录路由hop

一开始想直接在上个程序改,自己构造IP包头,但后来发现不行,微软不让干了,所有后来选用libcap库来收发包 代码写的很乱.. 1 #pragma pack(4) 2 3 #define ECHO_REQUEST 8 4 #define DATASIZE 65500 5 #define PACKETSIZE 65535 6 #define IPCOUNT 9 7 #define MACSIZE 6 8 #define OPTION_RR 7 9 10 struct ethhdr 11 { 12

初识Socket通信:基于TCP和UDP协议学习网络编程

学习笔记: 1.基于TCP协议的Socket网络编程: (1)Socket类构造方法:在客户端和服务器端建立连接 Socket s = new Socket(hostName,port);以主机名和端口号作为参数来创建一个Socket对象. Socket s = new Socket(address,port);以InetAddress对象和端口号作为参数来创建一个Socket对象. 创建Socket对象时可能抛出UnknownHostException或IOException异常,必须捕获它们

tcp/ip协议学习 第三章 IP协议

派猴子来的救兵 关于IP的RFC文档在此! IP的头文件还是先贴一下, 总是记不住. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-

ICMP和arp协议以及tcp/ip学习

ICMP:http://blog.csdn.net/tigerjibo/article/details/7356936 ARP:http://blog.csdn.net/tigerjibo/article/details/7351992 IP分片:http://www.vants.org/?post=106 TSO/GSO linux内核源码剖析 udp: http://modernrobber.blog.163.com/blog/static/214636320074305183395/ ht

java学习--基础知识进阶第十二天--网络编程概述、UDP协议、TCP协议

今日内容介绍 u  网络编程概述 u  UDP u  TCP 第1章 网络编程概述 1.1 网络协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样.在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式.传输速率.传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换. 网络通信协议有很多种,目前应用最广泛的是TCP/IP协议(Transmission Contro

Python学习32天(socket、tcp协议)

守望了31天,终于等到了网络编程阶段,很多很多的基础原理知识,然后脑子懵了,进入新世界的感觉. 一.客户端\服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 2.互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看它的视频) C/S架构与socket的关系: 学习socket就是为了完成C/S架构的开发 二.互联网协议 1.如何基于socket编程,来开发一款自己的C/S架构软件