网络编程考前资料.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络编程考前资料

Linux网络编程 又称为 套接字编程 它位于 应用层 和 传输层 之间 API 即 应用程序编程接口 TCP 面向连接的 可靠的 传输控制协议 全双工通信 IPV4 32位 IPV6 128位 应用层(应用层协议有:TELNET 23端口 、FTP 21端口、SMTP 使用TCP的25端口),传输层(TCP,UDP),网际层IP,网络接口层。 TFTP使用 UDP 69端口 login命令 使用 TCP 513 端口 数据报文最长为65536 即2的16次方个字节;TCP的保留值为6;UDP的保留值为17;ICMP为1 客户端建立连接:CLOSED、SYN_SENT、ESTABLISHED 客户端关闭连接:ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT、CLOSED 服务器端建立连接:CLOSED、SYN_RCVD、ESTABLISHED 服务器端关闭连接:ESTABLISHED、CLOSE_WAIT、LAST_ACK、CLOSED TCP的可靠性: 超时重传 确认信号 检验和 重新排序 丢弃重复 流量控制 导致TCP协议发送RST包的原因: 1)SYN 数据段指定的目的端口处没有接收进程在等待。 2)TCP协议想放弃一个已经存在的连接。 3)TCP接收到一个数据段,但是这个数据段所标识的连接不存在。 接收到RST数据段的TCP协议立即将这条连接非正常地断开,并向应用程序报告错误。 建立TCP连接 客户端通过调用connect()函数主动打开并发送SYN分节,服务器端准备好接收客户端发送的分节请求,并且通过调用socket、bind和listen函数来完成。收到消息后,需要确认消息,那么服务器端发送一个自己的SYN分节和一个确认号ACK给客户端,接受客户的连接,最后客户端发送ACK确认服务器的SYN,连接建立成功。 释放TCP连接 客户端首先使用close函数主动关闭,并且发送一个FIN分节,服务器收到FIN分节后被动关闭,向客户端发送ACK确认FIN分节。当服务器将待发的数据全部发送完成,之后服务器调用close函数关闭套接字,因此会再发送一个FIN分节给客户端,最后客户端发送ACK确认服务器发来的FIN分节,并且彻底关闭连接。 一次完成的TCP通讯包括:建立连接、数据传输、关闭连接 建立连接(三次握手): 1.客户端通过向服务器端发送一个SYN来建立一个主动打开,作为三路握手的一部分。 2.服务器端应当为一个合法的SYN回送一个SYN/ACK。 3.最后,客户端再发送一个ACK。这样就完成了三路握手,并进入了连接建立状态。 数据传输: 1.发送数据端传输PSH数据包 2.接收数据端回复ACK数据包 关闭连接(四次分手): 1. 一端主动关闭连接。向另一端发送FIN包。 2. 接收到FIN包的另一端回应一个ACK数据包。 3. 另一端发送一个FIN包。 4. 接收到FIN包的原发送方发送ACK对它进行确认。 TCP状态转换图: 说明(netstat可查看状态): CLOSED: 初始状态。 LISTEN: 服务器端的某个SOCKET处于监听状态,可以接受连接了。 SYN_RCVD: 服务器接受到了SYN报文。 SYN_SENT: 客户端已发送SYN报文。 ESTABLISHED:连接已经建立了。 FIN_WAIT_1:当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情况下,无论对方何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1状态一般是比较难见到的,而FIN_WAIT_2状态还有时常常可以用netstat看到。 FIN_WAIT_2:上面已经详细解释了这种状态,实际上FIN_WAIT_2状态下的SOCKET,表示半连接,也即有一方要求close连接,但另外还告诉对方,我暂时还有点数据需要传送给你,稍后再关闭连接。 TIME_WAIT: 表示收到了对方的FIN报文,并发送出了ACK报文,就等2个MSL(最大生存时间)值(RFC建议2分钟,Berkeley传统使用30s)后即可回到CLOSED可用状态了。如果FIN_WAIT_1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。 TIME_WAIT状态存在两个理由: 1.可靠地实现TCP连接的终止 2.允许老的重复分解在网络中消逝 执行主动关闭的一端都会进入TIME_

文档评论(0)

wuyuetian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档