- 1、本文档共73页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机软件及应用]第6讲 CH5-传输层与TCPIP网络编程
第三章 面向连接的网络通信实现 1. 万维网通信的特点 2. 传输层协议概述 3. 传输控制协议TCP 4. TCP传输协议报文头格式 5. TCP/IP通信的实现 6. TCP/IP 网络编程举例 §3.1 万维网通信的特点 网络分层通信 WWW协议服务提供的特点 网络协议分层的基本功能 分层通信的信息流示意 WWW 协议所提供的服务特点 万维网以客户服务器方式工作 需要提供可靠交付 Client与Server之间进行一对一的通信 信息双向传输 面向字节流(ASCII字符) §3.2 传输层协议概述 进程之间的通信 传输层的两个主要协议 传输层的端口 §3.3 传输控制协议TCP 1. TCP协议特点 2. TCP的连接 3. TCP传输连接管理 §3.4 TCP传输协议报文头格式 §3.5 TCP/IP通信的实现 1.系统调用机制 2. 套接字Socket的作用 3. 套接字连接的建立 socket有多种不同意思 应用编程接口 API 称为 socket API, 简称为 socket。 socket API 中使用的一个函数名也叫作socket。 调用 socket 函数的端点称为 socket。 调用 socke t函数时其返回值称为 socket描述符,可简称为 socket。 在操作系统内核中连网协议的 Berkeley 实现,称为 socket 实现。 伯克利套接字(Berkeley Socket) TCP套接字传输原语 §3.6 TCP/IP 网络编程举例 1. 万维网通信的特点 2. 传输层协议概述 3. 传输控制协议TCP 4. TCP传输协议报文头格式 5. TCP/IP通信的实现 6. TCP/IP 网络编程举例 套接字地址结构 IP 地址和如何处理它们 假设你已经有了一个sockaddr_in结构体ina,你有一个IP地 址0要储存在其中,你就要用到函数inet_addr(),将IP地址从 点数格式转换成无符号长整型。使用方法如下: ina.sin_addr.s_addr = inet_addr(0); 注意,inet_addr()返回的地址已经是网络字节格式, socket()函数 调用格式 int socket(int domain, int type, int protocol); 参数含义: domain:设置成 “AF_INET”,象 sockaddr_in结构; type:是 SOCK_STREAM 是 SOCK_DGRAM类型。 Protocol:设置为 “0”。 返回 返回在系统调用中要用到的 socket 描述符,或在错误的时候返回-1。 bind()函数 将套接字和机器上的一定的端口关联起来。 调用方法: #include sys/types.h #include sys/socket.h int bind(int sockfd, struct sockaddr *my_addr, int addrlen); 参数 Sockfd:调用 socket 返回的文件描述符 ; my_addr:数据结构 struct sockaddr指针,保存本机地址(即端口和 IP 地址) 信息; Addrlen:设置为 sizeof(struct sockaddr)。 返回 绑定成功与否标致。 connect()程序-如何连接到远程主机 系统调用 int connect(int sockfd, struct sockaddr *serv_addr, int addrlen); 参数 sockfd 是系统调用 socket() 返回的套接字文件描述符; serv_addr 是 保存着目的地端口和 IP 地址的数据结构 struct sockaddr ; addrlen 设置 为 sizeof(struct sockaddr) 。 使用方法 * * * * * * * * * * * * * * 3. 套接字连接的建立- 客户端 创建一个套接字 用socket原语创建一个套接字描述字结构。当套接字被创建后,它的端口号和 IP 地址都是空的。 客户端开始连接请求 利用connect原语,向服务器发出TCP连接请求,采用三次握手协议。 客户端进入数据接收/发送模式 当收到应答后,TCP连接成功建立,即可采用send和recv原语进行数据收发。 3. 套接字连接的建立-服务器端 把本地地址绑定到套接字 当套接字被创建后,它的端口号和 IP 地址都是空的,因此应用进程要调用 bind(绑定)来指明套接字的本地地址。在服务器端调用 bind 时就是把熟知端口号和本地IP地址填写到已创建的套接字中。 服务器进入被动监听方式 在调用 bind 后,还必须调
文档评论(0)