TCP 协议概述

1.TCP提供一种面向连接的、可靠的字节流服务。

2.两个应用程序通过TCP连接交换8bit字节构成的字节流。

3.每个TCP首部都包含源端和目的端的端口号,用于寻找发端和收端应用进程。这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接。

4.一个IP地址和一个端口号也称为一个插口(socket),出现在最早的TCP规范(RFC793)

TCP 保证可靠性:

1.应用数据被分割成 TCP 认为最适合发送的数据块

2.当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段,超时重发

3.当 TCP 收到发自 TCP 连接另一端的数据,它将发送一个确认

4.TCP 将保持它首部和数据的检验和

5.如果必要, TCP 将对收到的数据进行重新排序

6.TCP 还能提供流量控制

TCP是一个面向连接的协议。

1.使用telnet与tcpdump互相配合进行测试

115.159.28.111.51142 > 10.141.14.117.http: Flags [S], seq 1784777886, win 29200,

10.141.14.117.http > 115.159.28.111.51142: Flags [S.], seq 1181145550, ack 1784777887, win 28960,

115.159.28.111.51142 > 10.141.14.117.http: Flags [.], ack 1, win 229,

seq:Sequence number(顺序号码)

ack:Acknowledge number(确认号码)

syn:SYN(synchronous建立联机)

主机A:115.159.28.111   主机B:10.141.14.117.http

第一次握手:A发送syn=1, 产生随机seq=1784777886

第二次握手:B发送 随机产生seq=1181145550,ack=接收到的seq+1 1784777887

第三次握手:A发送 ack=1,

TCP首部标志位:

S SYN 同步序号

F FIN 完成发送

R RST 复位

P PST 推送

. 置为0

结束连接:

TCP 有一个特别的概念叫做 half-close,这个概念是说,TCP 的连接是全双工(可以同时发送和接收)连接,因此在关闭 连接的时候,必须关闭传和送两个方向上的连接。客户机给服务器一个 FIN 为1的 TCP 报文,然后服务器返回给客户端一个确认 ACK 报文, 并且发送一个 FIN 报文,当客户机回复 ACK 报文后(四次握手),连接就结束了。

客户端状态迁移:

CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED

服务端状态迁移:

CLOSED->LISTEN->SYN 收到->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED

长连接:指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。

短连接:是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。

ulimit -a

ulimit -n用于限制进程能够打开的文件描述符的最大数目。因为任何设备在linux下都是文件,通信的接口也有专门的接口文件负责,所以linux下进程tcp链接的最大并发量也受限于该值

[编程] TCP协议概述的更多相关文章

  1. 网络编程TCP协议-聊天室

    网络编程TCP协议-聊天室(客户端与服务端的交互); <span style="font-size:18px;">1.客户端发数据到服务端.</span> ...

  2. 网络编程——TCP协议、UDP协议、socket套接字、粘包问题以及解决方法

    网络编程--TCP协议.UDP协议.socket套接字.粘包问题以及解决方法 TCP协议(流式协议) ​ 当应用程序想通过TCP协议实现远程通信时,彼此之间必须先建立双向通信通道,基于该双向通道实现数 ...

  3. 网络编程——TCP协议

    1.TCP程序概述 TCP是一个可靠的协议,面向连接的协议. 实现TCP程序,需要编写服务器和客户端,Java API为我们提供了java.net包,为实现网络应用程序提供类. ServerSocke ...

  4. Linux 高性能服务器编程——TCP协议详解

    问题聚焦:     本节从如下四个方面讨论TCP协议:     TCP头部信息:指定通信的源端端口号.目的端端口号.管理TCP连接,控制两个方向的数据流     TCP状态转移过程:TCP连接的任意一 ...

  5. 基于网络编程 TCP协议 及 socket 基本语法

    socket是什么 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面, ...

  6. 计算机网络(7)-----TCP协议概述

    传输控制协议(Transmission Control Protocol) 概念 一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机网络OSI模型中,它 ...

  7. TCP/IP详解学习笔记(9)-TCP协议概述

    终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...

  8. 网络编程——TCP协议的三次握手和四次挥手

    三次握手原理解析 TCP握手协议在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND ...

  9. 网络编程——TCP协议和通信

    第1章 TCP通信 TCP通信同UDP通信一样,都能实现两台计算机之间的通信,通信的两端都需要创建socket对象. 区别在于,UDP中只有发送端和接收端,不区分客户端与服务器端,计算机之间可以任意地 ...

随机推荐

  1. docker - 从安装到部署一个web应用(go、java)

    一:安装docker 1.https://docs.docker.com/engine/installation/binaries/ 下载docker最新版二进制tar.gz linux下: wget ...

  2. NPOI 操作笔记

    public static class ExcelUtil { // Methods public static DataTable GetDataTable(Stream stream) { HSS ...

  3. .gitignore文件常用写法

    一般的项目代码中会涉及到密码.key/secret等隐私内容,不适合上传github公开.这时可以使用.gitignore文件来屏蔽这些文件的提交. 你可能用到的写法如下 写法 含义 /build/ ...

  4. Flask系列07--Flask中的CBV, 蓝图的CBV

    一.CBV使用 class base view 和django中类似 class Login(views.MethodView): # methods=["POST"," ...

  5. [宁波集训]0827Day1

    1.\(CF771D\ Bear\ and\ Company\)(原题,比赛时改为多组数据) 一道毒瘤\(dp\)题,\(dp[i][j][k][0/1]\)表示有\(i\)个\(V\),有\(j\) ...

  6. flask框架1

    说flask框架之前,必须得提一下web框架,他的作用是为了利用互联网交流工作文档,我们为什么要使用框架,因为框架的稳定性和可扩展性强并且可以降低开发难度,提高开发效率.总的来说就是避免做无用功,重复 ...

  7. tomcat常见错误处理

    1 .java.lang.IllegalArgumentException: Document base /XXX/tomcat/webapps/manager does not exist 解决方法 ...

  8. Flask-Restful详解

    Restful API规范 restful api是用于在前端与后台进行通信的一套规范.使用这个规范可以让前后端开发变得更加轻松.以下将讨论这套规范的一些设计细节. 协议: 采用http或者https ...

  9. TortoiseSVN切换更改登录账号密码

    TortoiseSVN切换更改登录账号密码 方法: 在TortoiseSVN的设置对话框中,选择“已保存数据”,在“认证数据”那一行点击“清除”按钮,清楚保存的认证数据,再检出的时候就会重新跳出用户名 ...

  10. 安装ORACLE时 各Linux版本下载地址

    oracle linux :https://edelivery.oracle.com/osdc/faces/SearchSoftware 需要注册oracle账号 redhat官方下载 https:/ ...