03基本tcp编程

03基本tcp编程

ID:29423024

大小:152.00 KB

页数:11页

时间:2018-12-19

03基本tcp编程_第1页
03基本tcp编程_第2页
03基本tcp编程_第3页
03基本tcp编程_第4页
03基本tcp编程_第5页
资源描述:

《03基本tcp编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、.教案教学专题授课学时教学章节授课对象教学类型授课形式教学重点教学难点教学内容和教学目标知识点学习要求了解理解掌握熟练掌握TCP套接字编程基本步骤TCP套接字编程基本函数例程讲解教学过程教学提示媒体使用课后导读教学后记页.讲稿教学内容教学设计3.1TCP套接字编程使用TCP套接字可以实现基于TCP/IP协议的面向连接的通信,分为服务器端和客户端两部分。TCP套接字编程基本函数3.1.1socket()函数#includeintsocket(intfamily,inttype,intprotocol)返回:非负套接字(sockfd)-成功;-1-出错。fami

2、ly:协议族;type:套接字类型;protocol:一般为0,除原始套接字外。familytypeAF_INETIPv4协议SOCK_STREAM字节流套接口AF_INET6IPv6协议SOCK_DGRAM数据报套接口AF_LOCALunix域协议SOCK_RAW原始套接口AF_ROUTE路由套接口AF_KEY密钥套接口3.1.2connect()函数#includeintconnect(intsockfd,conststructsockaddr*addr,socklen_taddrlen);联想:在讲解过程中让学生联想用户与10086客服之间的沟通过程。

3、页.返回:0-成功;-1-出错;函数connect激发TCP的三路握手过程;仅在成功或出错返回;错误有以下几种情况:如果客户没有收到SYN分节的响应(总共75秒,这之间需要可能需要重发若干次SYN),则返回ETIMEDOUT。如果对客户的SYN的响应是RST,则表明该服务器主机在指定的端口上没有进程在等待与之相连。函数返回错误ECONNREFUSED;如果客户发出的SYN在中间路由器上引发一个目的地不可达ICMP错误,客户上的内核保存此消息,并按第一种情况,连续发送SYN,直到规定时间,返回保存的消息(即ICMP错误)作为EHOSTUNREACH或ENETUNREACH错误返回给进程。

4、3.1.3bind()函数#includeintbind(intsockfd,conststructsockaddr*addr,socklen_lenlen)返回:0-成功;-1-出错并置errno该函数指明套接字将使用本地的哪一个协议端口进行数据传送(IP地址和端口号)。注意:协议地址addr是通用地址。Len是该地址结构(第二个参数)的长度。一般而言,服务器调用此函数,而客户则很少调用它。绑定地址时,可以指定地址和端口号,也可以指定其中之一,甚至一个也不指定。通配地址:INADDR_ANY,其值一般为0,它通知内核选择IP地址。若指定端口号为0,调用函数

5、bind时,内核选择一个临时端口(在实际中,端口号都要指定);但若指定一个通配IP地址,则直到套接字已连接(TCP)或数据报已在套接字上发出(UDP),内核才选择一个本地IP地址。应用程序可在bind()后用getsockname()来获知所分配的地址,但必需注意的是,getsockname()只有在套接口连接成功后才会填写Internet地址,这是由于在多种主机环境下若干种Internet地址都是有效的。3.1.4listen()函数#includeintlisten(intsockfd,intbacklog)返回:0-成功;-1-出错并置errno值;函

6、数listen仅被服务器调用,它完成两件事情:强调:bind()的第二个参数是通用套接字地址结构!联想通用套接字地址结构和IPV4地址结构的区别。页.函数listen将未连接的套接字转化成被动套接字,指示内核应接受指向此套接字的连接请求;函数的第二个参数规定了内核为此套接字排队的最大连接个数;对于给定的监听套接字,内核要维护两个队列:1是未连接队列2是已连接队列当客户端连接服务端时先在未连接队列里面建立一条记录,等tcp三次握手完成后把记录从未连接队列中移到已连接队列。两个队列之和不超过backlog;backlog设置过大必然也会带来开销,主要包括队列的空间开销。较大的backlog

7、容易引起SYNflood攻击!backlog队列位于non-pageable的内存中,SYNflood会消耗大量的空间。CP的三次握手是怎么进行的:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手;接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让发送端发送一个确认数据包,这是第二次握手;最后,发送端发送一个SYN=0,ACK=1的数据包给接收

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。