第九讲Linux网络编程_(TCP).ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九讲Linux网络编程_(TCP).ppt

Linux网络编程TCP TCP:传输控制协议 RFC 793, 有RFC 1323 2581 2988 3390更新。 TCP是面向连接的。 TCP提供可靠性,实现了丢失重传。RTT的估算。 TCP通过给所发送数据的每一个段管理一个序列号进行排序。 TCP提供流量控制和拥塞控制:通告窗口、拥塞窗口。 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对它进行确认。 TCP连接关闭 TCP 建立过程 在端口21上打开被动socket,等待客户端链接请求 TCP 建立过程 客户端发起链接请求 TCP 建立过程 服务器创建一个子进程或线程专门处理这个请求 同时服务器主进程还是监听于21端口 TCP 建立过程 第二个客户端请求的建立 有4元组确定网络包发送给哪个进程或线程处理 Wireshark分析TCP 抓取TCP链接建立和结束的报文进行分析 西厢计划 墙是双向检测的 客户端发syn请求建立连接 服务器端发syn,ack确认 客户端给服务器回 fin,墙认为客户端结束,服务器由于链接未建立直接丢弃 客户端再回一个ack k, 服务器看到序列号不对 ,发送reset,墙认为服务器结束,安装了西厢计划的客户端忽略reset,直接发送正常ack 链接建立 。 TCP: 面向连接的交互 提供传输可靠性 程序要求简单 在程序中使用套接字调用 使用TCP的客户和服务器套接字函数调用序列 TCP客户端 找到期望与之通信的服务器IP地址和协议端口号 分配套接字(调用socket函数) 指明此连接需要在本地机器中的、任意的、未使用的协议端口,并允许TCP选择一个这样的端口(bind,非必须) 将这个套接字连接到服务器(connect) 传输数据 关闭连接 connect函数 指定一个不存在的IP地址 触发ICMP 报文 尝试一段时间后再返回目的不可达错误 TCP触发RST报文 IP地址存在,端口不存在 TCP收到一个不存在的链接上的报文 强制关闭已经存在的链接(对端机器重启等) bind函数 服务器一般不会让内核选择端口 客户端一般让内核选择端口 bind参数中IP和端口 Wildcard即为INADDR_ANY 套接字API int listen(int sockfd,int int backlog) 功能: 面向连接的服务器使用它将一个套接字置为被动模式,并准备接收传入连接。用于服务器,指明某个套接字连接是被动的 参数说明: sockfd:套接字描述符,指明创建连接的套接字 backlog:该套接字使用的队列长度,指定在请求队列中允许的最大请求数,一般设为SOMAXCONN 套接字API 内核为被动socket维护两个队列。 未完成连接队列——未完成三次握手 已完成链接队列——完成三次握手 backlog不能为0 有可能是两个队列之和 最终能等待的数目也可能是backlog乘以一个系数 当超出队列时,SYN会被忽略。不发送RST,客户端继续尝试连接 。 DDos攻击 拒绝服务攻击 半连接攻击 全链接攻击 减少time out的时间 用防火墙 禁止IP 追踪攻击源困难,对DDos没什么好的方法 功能:获取已完成的连接请求,返回新的连接的套接字描述符,如果没有,则进入sleep状态。 为每个新的连接请求创建了一个新的套接字,服务器只对新的连接使用该套接字,原来的监听套接字接受其他的连接请求。 新的连接上传输数据使用新的套接字,使用完毕,服务器将关闭这个套接字。 参数说明: sockfd:套接字描述符,指明正在监听的套接字 addr:提出连接请求的主机地址 addrlen:地址长度 TCP服务器 接受telnet连接,打印连接客户端IP地址 套接字API 功能 在TCP连接上发送数据,返回成功传送数据的长度,出错时返回-1。 send会将外发

文档评论(0)

czy2014 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档