第01章 tcpip网络编编程基础_第1页
第01章 tcpip网络编编程基础_第2页
第01章 tcpip网络编编程基础_第3页
第01章 tcpip网络编编程基础_第4页
第01章 tcpip网络编编程基础_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux/Unix网络编程信息工程学院2网络编程n 时间安排n 上课: 30学时 实验 10学时n 参考教材n 网络编程与分层协议设计 .刘飚 . 机工出版社 n Linux/Unix网络编程 .甘刚 .水利水电出版社n 用 TCP/IP进行网际互联 . 第一卷 n 用 TCP/IP进行网际互联 . 第三卷 Douglas E.Comer 电子工业出版社3先修课程 C语言 数据结构 计算机网络 操作系统 Linux的基本使用第 1章 TCP/IP网络编程基础 5客户机 /服务器编程模型Server程序程序 Client程序程序active open connection6循环式服务器客户机 /服务器编程模型C S1、数据请求、数据请求2、数据响应、数据响应无连接无连接3、数据请求、数据请求4、数据响应、数据响应1、连接请求、连接请求2、连接响应、连接响应5、关闭请求、关闭请求6、关闭响应、关闭响应C S8并发式服务器客户机 /服务器编程模型C SCCCC10循环式 vs. 并发服务器绑定地址监听连接接收连接处理连接断开连接接收请求处理请求返回响应绑定地址监听连接接收连接创建子进程关闭连接套接字处理连接关闭连接套接字终止子进程关闭监听套接字服务器主进程服务器子进程TCP循环式服务器 TCP并发服务器11TCPIP互联网IE浏览器浏览器QQQQOSI 与 TCP/IP应用层应用层表示层表示层会话层会话层传输层传输层网络层网络层数据链路层数据链路层物理层物理层应用层应用层IPv4, IPv6网络接口层网络接口层TCP UDPOSI模型模型 TCP/IP模型模型13TCPIP网络协议栈传输层 (TCP, UDP)网络层 (IP)数据链路层 (Ethernet, )物理层应用层 (HTTP, FTP, SMTP, )Linux kernelUser space网络编程接口15IP地址和端口源源 IP、源端口、目的、源端口、目的 IP和目的端口和目的端口 eg. WEB服务器和客户端间的数据传输过程 UDP:用户数据报协议n UDP提供无连接服务n UDP缺乏可靠性支持,应用程序必须实现:确认、超时、重传、流控等n UDP面向记录服务UDP数据报格式源端口源端口 目的端口目的端口长度长度 校验和校验和数据数据0 15 31#ifdef _FAVOR_BSDstruct udphdr u_int16_t uh_sport; /* source port */u_int16_t uh_dport; /* destination port */u_int16_t uh_ulen; /* udp length */u_int16_t uh_sum; /* udp checksum */;#elsestruct udphdr u_int16_t source;u_int16_t dest;u_int16_t len;u_int16_t check;#endifTCP:传输控制协议n TCP是面向连接的。n TCP提供可靠性,实现了丢失重传。n TCP通过给所发送数据的每一个段管理一个序列号进行排序。n TCP提供流量控制和拥塞控制。n TCP的连接是全双工的。TCP协议数据段格式HLEN 窗口窗口序列号序列号确认号确认号源端口源端口 目的端口目的端口保留保留 码位码位校验和校验和 紧急指针紧急指针选项选项 填充字节填充字节数据数据URGACKPSHRSTSYNFIN0 15 317首部首部数据区数据区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协议数据段格式(续)n 几个需要说明的字段几个需要说明的字段n HLEN:首部长度,以:首部长度,以 4字节(字节( 32位)为单位。位)为单位。 tcp数数据段首部包括固定和变长两部分;据段首部包括固定和变长两部分;n 窗口:为通告窗口;窗口:为通告窗口;n URG位:如果使用紧急数据指针,则将这一位设为位:如果使用紧急数据指针,则将这一位设为 1n ACK位:如果确认序列号有效,则设为位:如果确认序列号有效,则设为 1;n PSH位:表示位:表示 ”推推 ”数据,如果这一位设置成数据,如果这一位设置成 1,表示希,表示希望接收方在接收到这个数据段之后,将它立即传送给望接收方在接收到这个数据段之后,将它立即传送给高层应用程序,而不是缓存起来。高层应用程序,而不是缓存起来。TCP协议数据段格式(续)n RST位:表示请求重置连接。当位:表示请求重置连接。当 TCP协议接收到一个协议接收到一个不能处理的数据段时,向对方不能处理的数据段时,向对方 TCP协议发送这种数据协议发送这种数据段,表示这个数据段所标识的连接出现了某种错误,段,表示这个数据段所标识的连接出现了某种错误,请求对方请求对方 TCP协议将这个连接清除。协议将这个连接清除。 有有 3种情况可能种情况可能导致导致 TCP协议发送协议发送 RST数据段数据段 ( 1) SYN数据段指定的数据段指定的目的端口处没有接收进程等待;(目的端口处没有接收进程等待;( 2) TCP协议想放协议想放弃一个已经存在的连接;(弃一个已经存在的连接;( 3) TCP接收到一个数据接收到一个数据段,但是这个数据段所标识的连接不存在。接收到段,但是这个数据段所标识的连接不存在。接收到RST数据段的数据段的 TCP协议立即将这条连接非正常断开,协议立即将这条连接非正常断开,并向应用程序报告;并向应用程序报告;TCP协议数据段格式(续)n SYN位:请求建立连接。位:请求建立连接。 tcp用这种数据段向对方用这种数据段向对方 tcp协议协议请求建立连接,在这个数据段中,请求建立连接,在这个数据段中, tcp协议将它选择的初始协议将它选择的初始序列号通知对方,并且与对方协议协商最大数据段的大小序列号通知对方,并且与对方协议协商最大数据段的大小。n FIN位:请求关闭连接。当协议收到对这个数据段的确认位:请求关闭连接。当协议收到对这个数据段的确认后,成功关闭写方向的连接,因为后,成功关闭写方向的连接,因为 tcp连接是全双工的,在连接是全双工的,在发送了发送了 FIN数据段之后,它仍能接收数据,直至对方也发数据段之后,它仍能接收数据,直至对方也发送送 FIN数据段。数据段。n 紧急指针:如果设置了紧急指针:如果设置了 URG位,这个字段指出紧急数据相位,这个字段指出紧急数据相对于这个数据段的开始序列号的偏移量。对于这个数据段的开始序列号的偏移量。 tcp协议只提供一协议只提供一字节的紧急数据,但由于历史原因,紧急指针指向紧急数字节的紧急数据,但由于历史原因,紧急指针指向紧急数据的下一个位置。据的下一个位置。TCP三次握手客户客户 服务器服务器SocketConnect(阻塞阻塞 )(主动打开主动打开 )Socket,bind,listen(被动打开被动打开 )SYN xSYN y, ack x+1ack y+1Accept返回返回Read阻塞阻塞Connect返回返回TCP连接的建立n TCP连接的过程:n 服务器必须准备好接受外来的连接。通过调用 socket, bind, listen函数完成。称为被动打开。n 客户通过调用 connect进行主动打开。这引起客户 TCP发送一个 SYN分节,告诉服务器客户将在连接中发送的数据的初始序列号。n 服务器必须确认客户的 SYN,同时自己也得发送一个SYN分节。服务器以单个分节向客户发送 SYN和对客户的 SYN的 ACK。n 客户必须确认服务器的 SYN。TCP连接关闭客户客户 服务器服务器Close主动关主动关 闭闭 被动关闭被动关闭Read返回返回 0FIN Mack N+1Closeack M+1FIN NTCP连接终止n TCP一般用四个分节终止一个连接:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论