随手笔记之VC++ (七)

来源:互联网 发布:网络购彩票恢复了吗 编辑:程序博客网 时间:2024/04/29 20:51

TCP/UDP IP 协议

OSI 七层参考模式:

 应用层             à 处理网络应用

 表示层             à 数据表示

 会话层             à 主机间的通信

 传输层             à 端到端的链接     TCP/UDP

网络层             à 寻址和最短路劲   IP

数据链路层         à 介质访问

物理层             à 二进制传输

Telnet 远程登入协议。

FTP   文件传输协议

HTTP 超文本传输协议

DNS  域名服务         à解析域名www.baidu.com 为IP地址。  

SMTP 简单邮件传输协议

POP3  邮局协议

TCP协议 是面向连接的可靠传输协议,通信时要三步握手来建立双方的连接,

TCP 协议提供了数据的确认和数重传的机制,保证了发送的数据一定能够到达

通信的对方。

UDP协议 是不连接,不可靠的协议,可以直接向一个IP地址发送数据,但不保证对方能接受到数据,实时性较高。

TCP/IP 模型

应用层

传输层

网络层

网络接口层

套接字用于通信区域中,是一个抽象的概念,主要用于将通过套接字通信的进程的共有的特性综合在一起,套接字通常只与一个区域的套接字交换数据,

Window Sockets 只支持一个通信的区域,网际域(AF_INET),

网络字节顺序

由于不同计算机上存放的数据字节的顺序不同,这样发送的数据后,即使接收方接受到数据,也有可能无法查看到接受到的数据,所以在网络中不同的主机间进行通信时要 统一采用 网络字节顺序。

TCP协议下的 C/S 模式

服务端:

1. 创建套接字。 socket

2. 将套接字绑定到一个本机的地址和端口上。 bind

3. 将套接字设为监听模式,准备接受客户请求。Listen

4. 等待客户请求后,接受请求,返回一个新的对应于此次连接的套接字。accept

5. 用返回的新套接字与客户端进行通信 send/recv

6. 返回等待另一个客户请求。

7. 关闭套接字。

客户端:

1. 请求连接服务器所在主机的特定端口。

2. 连接成功后与服务器进行信息的通信。

3. 关闭套接字。

UDP协议下的C/S 模式

服务端:

1. 创建套接字。socket

2. 将套接字绑定到一个本机的地址和端口上。 bind

3. 等待接受数据。recvfrom

4. 关闭套接字。

客户端:

1. 创建套接字。 Socket

2. 向服务器发送数据。sendto

3. 关闭套接字。

Int WSAStartup(WORD 版本号,LPWSADATA  一个结构体指针);

Socket(AF_INET ,类型->SOCK_STREAM / SOCK_DGRAM, 协议->可以0)返回一个套接字 SOCKET 类型,失败的话可以通过WSAGetLastError()

函数返回一个INVALID_SOCKET值。

Int bind套接字,套接字本地地址信息,该地址结构的长度)

Unsigned long inet_addr一个字符串指针); 是将十进制的IP地址转换为无符号长整形的数值。如果为 INADDR_ANY时候,允许套接字向本级任何的IP地址进行数据的交换,因为一个本机可以有多个网卡就可能有多个IP地址,用这个可以简化。

Char FAR *inet_ntoa( struct in_addr in); 相反返回一个十进制的IP地址字符串

Int listen(套接字,允许监听的个数);

SOCKET accept(套接字,请求的客户端IP地址信息和端口信息,地址信息长度);

Int send(套接字,一个字符串指针保存要传递的数据,这个字符串大小,0)

Int recv(套接字,字符串指针保存接受的数据,字符串大小,0);

Int connect(套接字,请求连接的服务器地址信息,服务器端地址的长度);

U_short htons (u_short hostshort); 主机字节顺序转换为TCP/IP网络字节顺序

16

U_long htonl( u_long hostlong);  主机字节顺序转换为TCP/IP网络字节顺序

32

原创粉丝点击