﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-月落垟-随笔分类-unix socket编程学习笔记</title><link>http://www.cppblog.com/sumflowers/category/13972.html</link><description>You got a dream,you have to pretend it</description><language>zh-cn</language><lastBuildDate>Thu, 03 Jun 2010 07:07:42 GMT</lastBuildDate><pubDate>Thu, 03 Jun 2010 07:07:42 GMT</pubDate><ttl>60</ttl><item><title>TCP/IP概括</title><link>http://www.cppblog.com/sumflowers/archive/2010/06/03/117090.html</link><dc:creator>小修</dc:creator><author>小修</author><pubDate>Thu, 03 Jun 2010 06:57:00 GMT</pubDate><guid>http://www.cppblog.com/sumflowers/archive/2010/06/03/117090.html</guid><wfw:comment>http://www.cppblog.com/sumflowers/comments/117090.html</wfw:comment><comments>http://www.cppblog.com/sumflowers/archive/2010/06/03/117090.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/sumflowers/comments/commentRss/117090.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sumflowers/services/trackbacks/117090.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"><br><strong>一、TCP/IP介绍</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCP/IP协议(Transfer Controln Protocol/Internet Protocol)叫做传输控制/网际协议，又叫网络通讯协议，这个协议是Internet国际互联网络的基础。<br><br>TCP/IP由四个层次组成：网络接口层（链路层）、网间网层（网络层）、传输层（运输层）、应用层。<br>&nbsp;&nbsp;&nbsp;&nbsp;网络接口层：这是TCP/IP软件的最低层，负责接收IP数据报并通过网络发送之，或者从网络上接收物理帧，抽出IP数据报，交给IP层。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;网间网层：负责相邻计算机之间的通信。其功能包括三方面。一、处理来自传输层的分组发送请求，收到请求后，将分组装入IP数据报，填充报头，选择去往信宿机的路径，然后将数据报发往适当的网络接口。二、处理输入数据报：首先检查其合法性，然后进行寻径--假如该数据报已到达信宿机，则去掉报头，将剩下部分交给适当的传输协议；假如该数据报尚未到达信宿，则转发该数据报。三、处理路径、流控、拥塞等问题。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;传输层：提供应用程序间的通信。其功能包括：一、格式化信息流；二、提供可靠传输。为实现后者，传输层协议规定接收端必须发回确认，并且假如分组丢失，必须重新发送。</p>
<p dir=ltr style="FONT-SIZE: 12pt; MARGIN-RIGHT: 0px; FONT-FAMILY: 宋体" align=left>&nbsp;&nbsp;&nbsp;&nbsp;应用层：向用户提供一组常用的应用程序，比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。<br><br><img height=411 alt="" src="http://www.cppblog.com/images/cppblog_com/sumflowers/tcpip.gif" width=415 border=0><br><br><br>ARP(Address Resolation Protocol) 地址解析协议<br>RARP(Reverse Address Resolution Protocol)反向地址转换协议<br>IP(Internetworking Protocol) 网间网协议<br>ICMP(Internet Control Message Protocol) 互联网控制信息协议<br>IGMP(Internet Group Management Protocol)Internet 组管理协议<br>TCP(Transport Control Protocol) 传输控制协议<br>UDP(User Datagram Protocol) 用户数据报协议<br>SMTP(Simple Mail Transfer Protocol) 简单邮件传输协议<br>SNMP(Simple Network manage Protocol) 简单网络管理协议<br>FTP(File Transfer Protocol) 文件传输协议</p>
<p dir=ltr style="FONT-SIZE: 12pt; MARGIN-RIGHT: 0px; FONT-FAMILY: 宋体" align=left><strong>二、TCP、UDP协议<br></strong>&nbsp;&nbsp;&nbsp;TCP：传输控制协议，面向连接、可靠的字节流、提供流量控制、全双工的数据传输服务。<br>&nbsp;&nbsp;&nbsp;UDP：用户数据协议，无连接、简单的、不可靠、定长数据包。<br><br><strong>三、TCP连接的建立与终止<br></strong>&nbsp;&nbsp;&nbsp;TCP连接的建立（三路握手）<br>1. 服务器必须准备好接受外来的连接。这通过调用 socket、bind 和 listen 函数来完成，称为被动打开（passive open）。<br>2. 客户通过调用 connect 进行主动打开（active open）。这引起客户TCP发送一个SYN分节（表示同步），它告诉服务器客户将在（待建立的）连接中发送的数据的初始序列号。一般情况下SYN分节不携带数据，它只含有一个IP头部、一个TCP头部及可能有的TCP选项。<br>3. 服务器必须确认客户的SYN，同时自己也得发送一个SYN分节，它含有服务器将在统一连接中发送的数据的初始序列号。服务器一单个分节向客户发送SYN和对客户SYN的ACK。<br>4. 客户必须确认服务器的SYN。<br><br>&nbsp;&nbsp;&nbsp;TCP连接终止<br>1. 某个应用进程首先调用close，称这一端执行主动关闭（active close），这一端的TCP发送一个FIN分节，表示数据发送完毕。<br>2.&nbsp; 接收到FIN的另一端执行被动关闭（passive close）。这个FIN由TCP确认。它的接收也作为 文件结束符传递给接收方应用进程（放在已排队等候该应用进程接收的任何其他数据之后），应为FIN的接收意味着应用进程在相应连接上再也接收不到额外数据。<br>3. 一段时间后，接收到文件结束符的应用进程将调用close关闭它的套接口。这导致它的TCP也发送一个FIN。<br>4. 接收到这个FIN的原发送方TCP（即执行主动关闭的那一端）对它进行确认。<br><br><img height=457 alt="" src="http://www.cppblog.com/images/cppblog_com/sumflowers/tcp1.gif" width=474 border=0><br><br><strong>四、TCP状态转换图<br></strong><img height=480 alt="" src="http://www.cppblog.com/images/cppblog_com/sumflowers/tcp2.gif" width=397 border=0><br></p>
<img src ="http://www.cppblog.com/sumflowers/aggbug/117090.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sumflowers/" target="_blank">小修</a> 2010-06-03 14:57 <a href="http://www.cppblog.com/sumflowers/archive/2010/06/03/117090.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>