《第01章 TCPIP网络编编程基础.ppt》由会员分享,可在线阅读,更多相关《第01章 TCPIP网络编编程基础.ppt(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Linux/Unix网络编程信息工程学院2网络编程n时间安排n上课:30学时 实验 10学时n参考教材n网络编程与分层协议设计网络编程与分层协议设计.刘飚刘飚.机工出版社机工出版社 nLinux/Unix网络编程.甘刚.水利水电出版社n用TCP/IP进行网际互联.第一卷n用TCP/IP进行网际互联.第三卷 Douglas E.Comer 电子工业出版社3先修课程C语言数据结构计算机网络操作系统Linux的基本使用第第1章章 TCP/IP网络编程基础网络编程基础 5客户机客户机/服务器编程模型服务器编程模型ServerServer程序程序程序程序 ClientClient程序程序程序程序acti
2、ve open connectionactive open connection6循环式服务器循环式服务器客户机客户机/服务器编程模型服务器编程模型C CS S1 1、数据请求、数据请求2 2、数据响应、数据响应无连接无连接3 3、数据请求、数据请求4 4、数据响应、数据响应1 1、连接请求、连接请求2 2、连接响应、连接响应5 5、关闭请求、关闭请求6 6、关闭响应、关闭响应C CS S8并发式服务器并发式服务器客户机客户机/服务器编程模型服务器编程模型C CS SC CC CC CC C10循环式循环式 vs.并发服务器并发服务器绑定地址监听连接接收连接处理连接断开连接接收请求处理请求返回
3、响应绑定地址监听连接接收连接创建子进程关闭连接套接字处理连接关闭连接套接字终止子进程关闭监听套接字服务器主进程服务器子进程TCP循环式服务器TCP并发服务器11TCPIP互联网互联网IEIE浏览器浏览器浏览器浏览器QQQQQQQQOSI 与 TCP/IP应用层应用层表示层表示层会话层会话层传输层传输层网络层网络层数据链路层数据链路层物理层物理层应用层应用层IPv4,IPv6IPv4,IPv6网络接口层网络接口层TCPTCPUDPUDPOSIOSI模型模型TCP/IPTCP/IP模型模型13TCPIP网络协议栈网络协议栈传输层传输层(TCP,UDP)网络层网络层(IP)数据链路层数据链路层(Et
4、hernet,)物理层物理层应用层应用层(HTTP,FTP,SMTP,)Linux kernelLinux kernelUser spaceUser space网络编程接口15IP地址和端口地址和端口源源源源IPIP、源端口、目的、源端口、目的、源端口、目的、源端口、目的IPIP和目的端口和目的端口和目的端口和目的端口 eg.WEB服务器和客户端间的数据传输过程 UDP:用户数据报协议nUDP提供无连接服务nUDP缺乏可靠性支持,应用程序必须实现:确认、超时、重传、流控等nUDP面向记录服务UDP数据报格式源端口源端口目的端口目的端口长度长度校验和校验和数据数据0 015153131#ifde
5、f _FAVOR_BSD#ifdef _FAVOR_BSDstruct udphdr struct udphdr u_int16_t uh_sport;/*source port*/u_int16_t uh_sport;/*source port*/u_int16_t uh_dport;/*destination port*/u_int16_t uh_dport;/*destination port*/u_int16_t uh_ulen;/*udp length*/u_int16_t uh_ulen;/*udp length*/u_int16_t uh_sum;/*udp checksum*/
6、u_int16_t uh_sum;/*udp checksum*/;#else#elsestruct struct udphdr udphdr u_int16_t source;u_int16_t source;u_int16_t dest;u_int16_t dest;u_int16_t len;u_int16_t len;u_int16_t check;u_int16_t check;#endif#endifTCP:传输控制协议nTCP是面向连接的。nTCP提供可靠性,实现了丢失重传。nTCP通过给所发送数据的每一个段管理一个序列号进行排序。nTCP提供流量控制和拥塞控制。nTCP的连接是
7、全双工的。TCP协议数据段格式HLENHLEN窗口窗口序列号序列号确认号确认号源端口源端口目的端口目的端口保留保留码位码位校验和校验和紧急指针紧急指针选项选项填充字节填充字节数据数据U UR RGGA AC CK KP PS SH HR RS ST TS SY YN NF FI IN N0 0151531317 7首部首部数据区数据区TCP协议数据段格式(续)struct tcphdr WORD SourPort;WORD DestPort;DWORD SeqNo;DWORD AckNo;BYTE HLen;BYTE Flag;WORD Window;WORD ChkSum;WORD UrgP
8、tr;/*Put options here.*/;TCP协议数据段格式(续)n n几个需要说明的字段n nHLENHLEN:首部长度,以:首部长度,以4 4字节(字节(3232位)为单位。位)为单位。tcptcp数数据段首部包括固定和变长两部分;据段首部包括固定和变长两部分;n n窗口:为通告窗口;窗口:为通告窗口;n nURGURG位:如果使用紧急数据指针,则将这一位设为位:如果使用紧急数据指针,则将这一位设为1 1n nACKACK位:如果确认序列号有效,则设为位:如果确认序列号有效,则设为1 1;n nPSHPSH位:表示位:表示”推推”数据,如果这一位设置成数据,如果这一位设置成1 1
9、,表,表示希望接收方在接收到这个数据段之后,将它立即传示希望接收方在接收到这个数据段之后,将它立即传送给高层应用程序,而不是缓存起来。送给高层应用程序,而不是缓存起来。TCP协议数据段格式(续)n nRSTRST位:表示请求重置连接。当位:表示请求重置连接。当TCPTCP协议接收到一个协议接收到一个不能处理的数据段时,向对方不能处理的数据段时,向对方TCPTCP协议发送这种数据协议发送这种数据段,表示这个数据段所标识的连接出现了某种错误,段,表示这个数据段所标识的连接出现了某种错误,请求对方请求对方TCPTCP协议将这个连接清除。协议将这个连接清除。有有3 3种情况可能种情况可能导致导致TCP
10、TCP协议发送协议发送RSTRST数据段数据段(1 1)SYNSYN数据段指定的数据段指定的目的端口处没有接收进程等待;(目的端口处没有接收进程等待;(2 2)TCPTCP协议想放协议想放弃一个已经存在的连接;(弃一个已经存在的连接;(3 3)TCPTCP接收到一个数据接收到一个数据段,但是这个数据段所标识的连接不存在。接收到段,但是这个数据段所标识的连接不存在。接收到RSTRST数据段的数据段的TCPTCP协议立即将这条连接非正常断开,协议立即将这条连接非正常断开,并向应用程序报告;并向应用程序报告;TCP协议数据段格式(续)n nSYNSYN位:请求建立连接。位:请求建立连接。tcptcp
11、用这种数据段向对方用这种数据段向对方tcptcp协议协议请求建立连接,在这个数据段中,请求建立连接,在这个数据段中,tcptcp协议将它选择的初始协议将它选择的初始序列号通知对方,并且与对方协议协商最大数据段的大小。序列号通知对方,并且与对方协议协商最大数据段的大小。n nFINFIN位:请求关闭连接。当协议收到对这个数据段的确认位:请求关闭连接。当协议收到对这个数据段的确认后,成功关闭写方向的连接,因为后,成功关闭写方向的连接,因为tcptcp连接是全双工的,在连接是全双工的,在发送了发送了FINFIN数据段之后,它仍能接收数据,直至对方也发数据段之后,它仍能接收数据,直至对方也发送送FIN
12、FIN数据段。数据段。n n紧急指针:如果设置了紧急指针:如果设置了URGURG位,这个字段指出紧急数据相位,这个字段指出紧急数据相对于这个数据段的开始序列号的偏移量。对于这个数据段的开始序列号的偏移量。tcptcp协议只提供一协议只提供一字节的紧急数据,但由于历史原因,紧急指针指向紧急数字节的紧急数据,但由于历史原因,紧急指针指向紧急数据的下一个位置。据的下一个位置。TCP三次握手客户客户服务器服务器SocketSocketConnect(Connect(阻塞阻塞)(主动打开主动打开)Socket,bind,listSocket,bind,listenen(被动打开被动打开)SYN xSYN
13、 xSYN y,ack SYN y,ack x+1x+1ack y+1ack y+1AcceptAccept返回返回ReadRead阻塞阻塞ConnectConnect返回返回TCP连接的建立nTCP连接的过程:n服务器必须准备好接受外来的连接。通过调用socket,bind,listen函数完成。称为被动打开。n客户通过调用connect进行主动打开。这引起客户TCP发送一个SYN分节,告诉服务器客户将在连接中发送的数据的初始序列号。n服务器必须确认客户的SYN,同时自己也得发送一个SYN分节。服务器以单个分节向客户发送SYN和对客户的SYN的ACK。n客户必须确认服务器的SYN。TCP连接
14、关闭客户客户服务器服务器CloseClose主动关主动关闭闭被动关闭被动关闭ReadRead返回返回0 0FIN MFIN Mack N+1ack N+1CloseCloseack M+1ack M+1FIN NFIN NTCP连接终止nTCP一般用四个分节终止一个连接:n某个进程首先调用close,这一端的TCP于是发送一个FIN分节,表示数据发送完毕。主动关闭。n另一端称为被动关闭。TCP对接收的FIN分节进行确认,并以文件结束标志传递给应用程序。n一段时间后,接收到文件结束标志的应用程序调用close,这也导致向对方发送一个FIN分节。n接收到这个FIN分节的原发送方TCP对它进行确认。