`
holoblog
  • 浏览: 1222099 次
博客专栏
E0fcf0b7-6756-3051-9a54-90b4324c9940
SQL Server 20...
浏览量:18866
文章分类
社区版块
存档分类
最新评论

TCP/IP连接的建立

 
阅读更多

实现简单的TCP/IP通信

1.概述
TCP是面向连接的通信协议。协议,是指为了通信而大家一起规定好的所有格式和规范。面向连接,是指TCP通信实现依赖于连接的存在,就像我们打电话一样,如果中间没有连接成功(电话打通),是不可能进行通信的。TCP的这种特性决定了它在网络通信中的可靠性。

2.几个名词解释
TCP/IP协议: 包含了一系列构成互联网基础的网络协议。这些协议最早发源于美国国防部的ARPA网项目。TCP/IP模型也被称作DoD模型(Department of Defense Model)。TCP/IP字面上代表了两个协议:TCP(传输控制协议)和IP(网际协议)。
服务器:服务器是网络环境中的高性能计算机,它侦听网络上的其他计算机(客户机)提交的服务请求,并提供相应的服务。为此,服务器必须具有承担服务并且保障服务的能力。
客户机:连接服务器的计算机。
IP地址:所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。
端口号:一个IP地址可以实现多种服务,不同服务占用不同的端口,端口由0~65535
之间的整数标识,就是端口号
2.TCP连接在应用层的建立过程
建立一个TCP连接,需要一个客户端和一个服务器端。客户端和服务器端的区别在于谁先发出请求,而谁在等待请求。一般来说,客户端首先发起请求,而服务器端这时在等待客户端的请求。
1.) 服务器端创建一个ServerSocket对象,由ServerSocket来等待一个Socket对象。在建立ServerSocket对象时,要传入端口号这个参数。我们可以这样理解,ServerSocket对象就是某公司(IP)新部门(port)的一部座机,这个部门的有了这台座机,公就能处理业务了。这个过程中可能抛出一个异常,因为端口号是从0~65535的整数,如果在创建ServerSocket对象时传入了错误的参数,就会有异常抛出。
2.) 由ServerSocket对象等待Socket对象的接入。当程序运行到这里会堵塞,意思是如果没有Socket对象的接入,ServerSocket就一直在那里等待,永远不会运行到下一行。如果有Sorket对象接入,我们就将它获取了。这个很好理解,一部电话如果没有人打进来,就永远不会有通话(这里电话只是服务器,不考虑它打电话的情况)。
3.) 客户端创建一个Socket对象,传入IP和端口号两个参数。如果这一行执行成功,客户端就会得到一个Socket对象,同时,服务器的ServerSocket也结束了它的等待,得到了一个Socket对象。这就是客户打电话了,客户打电话的时候需要知道公司的电话号码(IP)和该部门的内网号码(port)。这个过程中也可能抛出异常:您播的是空号(IP地址不存在),对不起你打错了(你拨打的号码并不提供此服务,即输入的IP、port并没有一个Socket在等待)。如果这一步成功,客户端和服务器之间的连接就建立了。
4.) 简单代码实例
a) 服务器端
ServerSocket ssk = new ServerSocket(9090); //建立一个ServerSocket对象
Socket client = ssk.accept(); //等待连接
b) 客户端
Socket client = new client(“192.168.1.144”,9090);
3.TCP协议可靠性的保证(三次握手,四次断开)
TCP是一个面向连接的服务,面向连接的服务是电话系统服务模式的抽象,每一次完整的数据传输都必须经过建
立连接,数据传输和终止连接3个过程,TCP建立连接的过程称为三次握手,下面看一下三次握手的具本过程
TCP三次握手过程
a 主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段,
主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我.
b主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:
我已经收到你的请求了,你可以传输数据了;你要用哪佧序列号作为起始数据段来回应我
c 主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:"我已收到回复,我现在要开始传输实际数据了

这样3次握手就完成了,主机A和主机B 就可以传输数据了.
3次握手的特点
没有应用层的数据
SYN这个标志位只有在TCP建产连接时才会被置1
握手完成后SYN标志位被置0
TCP建立连接要进行3次握手,而断开连接要进行4次,这是由于TCP的半关闭造成的,因为TCP连接是全双工的(
即数据可在两个方向上同时传递)所以进行关闭时每个方向上都要单独进行关闭,这个单方向的关闭就叫半关闭.
关闭的方法是一方完成它的数据传输后,就发送一个FIN来向另一方通告将要终止这个方向的连接.当一端收到一个FIN,它必须
通知应用层TCP连接已终止了这个方向的数据传送,发送FIN通常是应用层进行关闭的结果.
4次断开
a 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求
b 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1
c由B 端再提出反方向的关闭请求,将FIN置1
d 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.
由TCP的三次握手和四次断开可以看出,TCP使用面向连接的通信方式,大大提高了数据通信的可靠性,使发送数据端
和接收端在数据正式传输前就有了交互,为数据正式传输打下了可靠的基础
名词解释
ACK TCP报头的控制位之一,对数据进行确认.确认由目的端发出,用它来告诉发送端这个序列号之前的数据段
都收到了.比如,确认号为X,则表示前X-1个数据段都收到了,只有当ACK=1时,确认号才有效,当ACK=0时,确认号无效,这时会要求重传数据,保证数据的完整性.
SYN 同步序列号,TCP建立连接时将这个位置1
FIN 发送端完成发送任务位,当TCP完成数据传输需要断开时,提出断开连接的一方将这位置

转自:http://yindingyu-yeah-net.iteye.com/blog/1143903

分享到:
评论

相关推荐

    TCP/IP教程TCP/IP基础

    22.6.2 建立PPTP连接 240 22.7 Windows 98拨号服务器 241 22.8 解决拨号网络连接中的问题 242 22.8.1 确认DUN配置 242 22.8.2 PPP日志 243 22.9 小结 243 第23章 Windows NT 4.0 244 23.1 Windows NT版本 244 23.2 ...

    《TCP/IP详解,卷1:协议》

    第18章 TCP连接的建立与终止 174 第19章 TCP的交互数据流 200 第20章 TCP的成块数据流 209 第21章 TCP的超时与重传 226 第22章 TCP的坚持定时器 245 第23章 TCP的保活定时器 251 第24章 TCP的未来和性能 256 第25章 ...

    TCP/IP技术大全

    第一部分 TCP/IP基础 第1章 开放式通信模型简介 1 1.1 开放式网络的发展 1 1.1.1 通信处理层次化 2 1.1.2 OSI参考模型 3 1.1.3 模型的使用 5 1.2 TCP/IP参考模型 7 1.3 小结 7 第2章 TCP/IP和Internet 8 2.1 一段...

    TCP/IP协议与网络编程技术

    第7章:介绍了网络程序设计有关的基础知识、一个网络程序入门实例和Winsock中编写网络程序常用的建立连接、传输数据、关闭连接等有关的函数。 第8章:介绍了TCP程序设计流程、基于C/C++的TCP程序设计实例和基于Java...

    TCP/IP详解(卷一)

    第18章 TCP连接的建立与终止 174 第19章 TCP的交互数据流 200 第20章 TCP的成块数据流 209 第21章 TCP的超时与重传 226 第22章 TCP的坚持定时器 245 第23章 TCP的保活定时器 251 第24章 TCP的未来和性能 256 第25章 ...

    Android socket局域网的UDP广播自动连接及TCP/ip通讯与心跳检测

    简单的Android Socket ...客户端通过UDP广播获取到服务器端的IP地址,通过TCP/IP协议与服务器建立连接。代码实现心跳检测,当服务器断网或是结束进程,客户端可重新连接(重连部分自己实现);代码有点凌乱,仅供参考!

    Delphi 编写TCP/IP网络Socket通信程序

    计算机网络是由一系列网络通信协议组成的,其中的核心协议是传输层的TCP/IP和UDP协议。TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用telnet登陆BBS,用的就是TCP协议;UDP是无连接的,通信双方都...

    TCP/IP的三次握手建立连接(带图释)

    Internet是使用TCP/IP协议簇。互联网发展之所以迅猛,恐怕得益于TCP/IP协议簇吧。Internet发展到今天,TCP/IP协议也显示出它的缺憾之处。为了保障信息安全,大量新的安全协议加入到TCP/IP协议大家庭里。无论是技术...

    TCP/IP详解 卷1完整版

    18.3 连接建立的超时 178 18.3.1 第一次超时时间 178 18.3.2 服务类型字段 179 18.4 最大报文段长度 179 18.5 TCP的半关闭 180 18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3...

    欧姆龙PLC通Modbus TCP/IP通信实例源码 ASP

    【亲测有效】欧姆龙PLC通Modbus TCP/IP通信实例源码 ...主要功能: 能适应目前欧姆龙 modbus tcp ip 系列plc 和PLC进行连接及数据收发 非常适合新手测试使用和学习! 适合人群:新手及有一定经验的开发人员

    TCP/IP技术大全(中文PDF非扫描版)

    本书内容十分丰富,几乎涵盖了有关TCP/IP的各个方面,包括开放式通信模型、TCP/IP通信模型、IP网络中的命名和寻址机制、地址解析及反向地址解析协议、DNS域字服务器、WINS、地址发现协议、IPv6、IP网络中的路由协议...

    MFC基于TCP/IP协议的聊天室源代码 (继承CSocket)

    MFC基于TCP/IP协议的聊天室源代码 (继承CSocket) 集客户端和服务器与一体;用户界面友好;

    西门子开放式TCP / IP通信的创建??连接数据向导.pdf

    连接数据向导pdf,西门子开放式TCP / IP通信的创建??连接数据向导:所有新型SIMATIC S7-CPU包含一个既可以进行TCP / IP通信又可以进行PROFINET通信的PROFINET接口。只能通过用于开放式通信的函数块对集成以太网接口...

    s7-300的tcp/ip协议通讯

    通过组态 TCP 连接及使用开放式通信专用功能块与其它设备建立 TCP 连接以实现通信。 本文以 S7-300CPU 作为 TCP 的 Clint 客户端, PC 机上运行的 TCP&UDPDebug; 软件模拟第三方设备作为服务器;进行通信的配置 过程...

    TCP/IP协议分析课件

    在客户进程和服务器进程使用TCP/IP协议进行通信时,是客户进程首先发起建立连接的请求,服务器进程接受连接请求。然后就逐级使用下一层所提供的服务。

    TCP/IP通信的监听与阻断

    摘 要:研究TCP/IP网络的监听, “三次握手”建立连接的过程,以及拆断TCP“三次握手”的方法。以RedHat 9.0(Linux)、Windows 2000 Server、Windows XP Professional、Windows XP Home、Windows 2003 为主要操作系统...

    TCP/IP详解卷 pdf格式

    18.3 连接建立的超时 178 18.3.1 第一次超时时间 178 18.3.2 服务类型字段 179 18.4 最大报文段长度 179 18.5 TCP的半关闭 180 18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3...

    TCP-IP技术大全

    IP和相关协议 第9章 IP协议家族 77 9.1 TCP/IP模型 77 9.1.1 解剖TCP/IP模型 78 9.1.2 协议组件 78 9.2 理解网际协议(IP) 79 9.2.1 IPv4结构 79 9.2.2 IP做什么 80 9.3 理解传输控制协议...

    TCP/IP详解 卷1:协议--源代码

    18.3 连接建立的超时 178 18.3.1 第一次超时时间 178 18.3.2 服务类型字段 179 18.4 最大报文段长度 179 18.5 TCP的半关闭 180 18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间...

    图解TCP/IP协议

    CP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道

Global site tag (gtag.js) - Google Analytics