下载此文档

linuxunix网络编程复习资料.docx


文档分类:IT计算机 | 页数:约46页 举报非法文档有奖
1/46
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/46 下载此文档
文档列表 文档介绍
第 2 页
TCP/IP简介
OSI模型和TCP/IP模型
TCP连接的建立
TCP连接的建立需要经过3次数据传输(三次握手),步骤如下:
服务器必须已经准备好接收客户的连接请求,这通过调用socket、bind和listen函数来完成。客户通过调用connect函数进行主动打开,这引起客户端发送一个SYN分节到服务器端。
服务器收到客户端发来的SYN分节后,必须发送ACK对其进行确认,同时发送一个自己的SYN分节给客户端,表示接受客户端建立连接的请求。
客户端发送ACK确认服务器SYN,建立连接成功。
TCP连接的终止
当数据传输完毕后,TCP需要发送4个分节终止该连接,释放TCP连接的步骤如下:
客户端应用进程调用close,调用close的结果就是发送一个FIN分节主动关闭连接。
服务器收到FIN后执行被动关闭,发送ACK对客户端的FIN分节进行确认。
当服务器将待发的数据发送完后,调用close关闭它的套接字,这导致它的TCP发送一个FIN分节给客户端。
接收到服务器的FIN分节后,对其发送一个ACK确认分节,当前的连接被彻底关闭。
第 2 页
套接字编程简介
套接字的类型
套接字支持各种通信协议,目前Linux系统常用的协议有以下两种:
INET:IP版本4。
INET6:IP版本6。
套接字类型是指创建套接字的应用程序要使用的通信服务的类型。Linux系统支持多种套接字类型,最常用的有以下几种:
SOCK_STREAM:流式套接字,提供面向连接、可靠的数据传输服务,数据按字节流、按顺序收发,保证数据在传输过程中无丢失、无冗余。TCP协议支持该套接字。
SOCK_DGRAM:数据报套接字,提供面向无连接的服务,数据收发无序,不能保证数据的准确到达。UDP协议支持该套接字。
SOCK_RAW:原始套接字。允许对低于传输层的协议或物理网络直接访问例如可以接收和发送ICMP报。常用于检测新的协议。
基本TCP套接字编程
TCP套接字编程
TCP套接字编程中,服务器端实现的步骤如下:
使用socket()函数创建套接字。
第 3 页
将创建的套接字绑定到指定的地址结构。
Listen()函数设置套接字为监听模式,使服务器进入被动打开的状态。
接受客户端的连接请求,建立连接。
接收、应答客户端的数据请求。
终止连接。
客户端实现的步骤相对比较简单:
使用socket()函数创建套接字。
调用connect()函数建立一个及TCP服务器的连接。
发送数据请求,接收服务器的数据应答。
终止连接。
socket()函数
客户端服务器端都存在,产生TCP套接字,作为TCP通信的传输端点
#include <sys/>
int socket(int family, int type, int protocol)
返回:非负套接字(sockfd)【0,1】-成功;-1-出错。
family:协议族;type:套接字类型; protocol:一般为0,除原始套接字外。
Family(确定协议类型)type(指明产生套接字类型)
AF_INET IPv4协议SOCK_STREAM 字节流套接口
AF_INET6IPv6协议SOCK_DGRAM 数据报套接口
第 4 页
【AF_LOCALunix域协议】SOCK_RAW 原始套接口
AF_ROUTE 路由套接口
【AF_KEY 密钥套接口】
bind() 绑定函数
绑定函数的作用就是为调用socket()函数产生的套接字分配一个本地协议地址,建立地址及套接字的对应关系。
#include <sys/>
int bind(int sockfd, const struct sockaddr *addr, socklen_len len)
返回:0-成功;-1-出错并置errno
Sockfd:套接字函数返回的套接字描述符server:指向特定协议的地址结构的指针
addrlen:套接字地址结构的长度
该函数指明套接字将使用本地的哪一个协议端口进行数据传送(IP地址和端口号),注意:协议地址addr是通用地址。
一般而言,服务器调用此函数,而客户则很少调用它。
绑定地址时,可以指定地址和端口号,也可以指定其中之一,甚至一个也不指定。通配地址:INADDR_ANY,其值一般为0,它通知内核选择IP地址。
IP地址端口结果
通配地址0内核选择IP地址和端口号
通配地址非0内核选择IP地址,进程指定端口
第 5 页
本地IP 0进程指定IP地址,内核选择端口
本地I

linuxunix网络编程复习资料 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数46
  • 收藏数0 收藏
  • 顶次数0
  • 上传人2623466021
  • 文件大小40 KB
  • 时间2021-12-29