FTP协议
传送文件:
1.文件名
2.大小
3.内容
网络的分层结构:
1.TCP/IP因其低成本、不同平台间通信的可靠性,已成为局
域网和internet的标准协议。
1.TCP/IP分为四层,从上网下依次是:
应用层、传输层、网络层、网络接口层。
2.应用层:
使用应用层协议,将封装好的数据提交给传输层、或者从传输层接收数据并处理。
3.传输层:
实现应用程序间的通信(端到端的通信)。
4.网络层: 主机间通信路径的选择(路由)。
5.网络接口层: 将二进制流转换为数据帧(网络传输的基本
单元),进行数据帧的发送和接收。
数据从一个IP地址发送到另一个IP,数据会经过应用层,传输层,网络层,
链路层的层层封装,到达指定IP后有经过几个进程层层解析,收到数据消息
socket网络编程
int main(void)
{
union IP{
int a;
char b[4];
};
union IP ip;
ip.b[0] = 192;
ip.b[1] = 168;
ip.b[2] = 3;
ip.b[3] = 130;
printf("%X.%X.%X.%X/n",ip.b[0],ip.b[1],ip.b[2],ip.b[3]);
printf("%X/n",ip.a)
}
int socket(int domain,
AF_INET IPv4,
AF_INET6 IPv6,
AF_UNIX 本地套接字
int type, //套接字类型
流式套接字 sock_stream
数据包套接字 sock_dgram
原始套接字 sock_ram
int protocol); //协议,一般写0
返回值:套接字描述符,简称为套接字
//绑定,绑定成功返回0,绑定失败返回-1.
int bind(int sockfd,
const struct sockaddr *addr,
socklen_t addrlen);
struct sockaddr
{
sa_family_t sa_family;
char sa_data[14];
}
struct sockaddr_in {
sa_family_t sin_family; /* address family: AF_INET */
in_port_t sin_port; /* port in network byte order */
struct in_addr sin_addr; /* internet address */
};
/* Internet address. */
struct in_addr {
uint32_t s_addr; /* address in network byte order */
};
//将套接字变成被动套接字
//backlog 等待队列的最大个数,
int listen(int sockfd, int backlog);
//等待客户端的连接
int accept(int sockfd, //socket函数返回的套接字
struct sockaddr *addr, //
socklen_t *addrlen); //
//返回值:新的套接字,用于和客户端进行通知。
//读取客户端信息
read:
ssize_t read(int fd, void *buf, size_t count);
write:
ssize_t write(int fd, const void *buf, size_t count);
int close(int fd)
connect(int sfd,struct)
c/s:复杂界面,缓存
自己开发,难写。不安全
b/s:安全 不用自己开发