- 1、本文档共380页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux/UNIX网络编程讲义
Linux/UNIX网络编程 先修课程 C语言 TCP/IP协议 操作系统原理 Linux的基本使用 Linux系统基础 软件开发环境 最常用编辑工具:vi 编译器:gcc,g++ gcc编译c程序 g++编译c++程序 调试器:gdb 基本的C/S服务模型 复杂的客户/服务器模型 WEB服务器和客户端之间的数据传输过程 OSI 与 TCP/IP 网络编程接口 通过路由器连接的两个网络 数据进入协议栈时的封装 以太网数据帧分用过程 UDP:用户数据报协议 UDP提供无连接服务 UDP缺乏可靠性支持,应用程序必须实现:确认、超时、重传、流控等 UDP面向记录服务 UDP数据报格式 TCP:传输控制协议 TCP是面向连接的。 TCP提供可靠性,实现了丢失重传。RTT的估算。 TCP通过给所发送数据的每一个段管理一个序列号进行排序。 TCP提供流量控制和拥塞控制:通告窗口、拥塞窗口。 TCP的连接是全双工的。 TCP协议数据段格式 TCP协议数据段格式(续) struct tcphdr { WORD SourPort; WORD DestPort; DWORD SeqNo; DWORD AckNo; BYTE HLen; BYTE Flag; WORD Window; WORD ChkSum; WORD UrgPtr; /* Put options here. */}; TCP协议数据段格式(续) 几个需要说明的字段 HLEN:首部长度,以4字节(32位)为单位。tcp数据段首部包括固定和变长两部分; 窗口:为通告窗口; URG位:如果使用紧急数据指针,则将这一位设为1 ACK位:如果确认序列号有效,则设为1; PSH位:表示”推”数据,如果这一位设置成1,表示希望接收方在接收到这个数据段之后,将它立即传送给高层应用程序,而不是缓存起来。 TCP协议数据段格式(续) RST位:表示请求重置连接。当TCP协议接收到一个不能处理的数据段时,向对方TCP协议发送这种数据段,表示这个数据段所标识的连接出现了某种错误,请求对方TCP协议将这个连接清除。有3种情况可能导致TCP协议发送RST数据段(1)SYN数据段指定的目的端口处没有接收进程等待;(2)TCP协议想放弃一个已经存在的连接;(3)TCP接收到一个数据段,但是这个数据段所标识的连接不存在。接收到RST数据段的TCP协议立即将这条连接非正常断开,并向应用程序报告; TCP协议数据段格式(续) SYN位:请求建立连接。tcp用这种数据段向对方tcp协议请求建立连接,在这个数据段中,tcp协议将它选择的初始序列号通知对方,并且与对方协议协商最大数据段的大小。 FIN位:请求关闭连接。当协议收到对这个数据段的确认后,成功关闭写方向的连接,因为tcp连接是全双工的,在发送了FIN数据段之后,它仍能接收数据,直至对方也发送FIN数据段。 紧急指针:如果设置了URG位,这个字段指出紧急数据相对于这个数据段的开始序列号的偏移量。tcp协议只提供一字节的紧急数据,但由于历史原因,紧急指针指向紧急数据的下一个位置。 TCP三路握手 TCP连接的建立 TCP连接的过程: 服务器必须准备好接受外来的连接。通过调用socket, bind, listen函数完成。称为被动打开。 客户通过调用connect进行主动打开。这引起客户TCP发送一个SYN分节,告诉服务器客户将在连接中发送的数据的初始序列号。 服务器必须确认客户的SYN,同时自己也得发送一个SYN分节。服务器以单个分节向客户发送SYN和对客户的SYN的ACK。 客户必须确认服务器的SYN。 TCP连接关闭 TCP连接终止 TCP一般用四个分节终止一个连接: 某个进程首先调用close, 这一端的TCP于是发送一个FIN分节,表示数据发送完毕。主动关闭。 另一端称为被动关闭。TCP对接收的FIN分节进行确认,并以文件结束标志传递给应用程序。 一段时间后,接收到文件结束标志的应用程序调用close,这也导致向对方发送一个FIN分节。 接收到这个FIN分节的原发送方TCP对它进行确认。 还有一种关闭称为“半关闭”(half-close) TCP 的TIME_WAIT状态 难点:执行主动关闭的那端进入这种状态。这个端点在该状态的持续时间是2MSL(最长分节生命周期)。 存在TIME_WAIT状态的两个理由? 网络中的几类地址 物理地址:即MAC地址 逻辑地址:即IP地址 端口地址:应用程序端口号 域名地址:取代IP地址记忆 物理地址 48位:24位OUI,24位由厂商分配 平面地址,无结构 全球唯一 局部范围寻址 存在于数据链路层 IP地址 IP地址标识着网
文档评论(0)