【UNIX】认识iner-net网际网以及网络编程
2014-12-03 16:43
204 查看
INTER-NET就是在网络之间的传输共享资源,它也就是跨计算机的传输,那么这种传输需要有什么样的约束,才能确保在网络之间传输,于是就有了网络传输协议的概念。
只要大家遵循这种约定,抽象的理解也就是统一了接口的的含义,只要使用者遵循了这种约定,也就可以像之前一个计算机中两个进程之间的传输信息共享资源。
网络的特点体现了网络进程过程中的分层特点,每一层约定特定的协议进行传输,
网络的体系结构是指网络的层次结构和每层所使用的协议的集合
在网络体系结构中有两个重要的体系结构:OSI于TCP/IP
网络的互联促成了TCP/IP协议的产生
现在通用的一般是TCP/IP体系结构:
1)传输层遵循的是TCP/UDP协议
TCP协议属于传输层的协议其中也包括UDP和SCTP的协议
其中传输层的协议是来保证文件传输的可靠性(数据无丢失,数据无误,数据无乱序,数据无重复到达),
而TCP协议就是其中面向连接的传输层协议,使用范围有:适用于对传输性能要求高,以及大文件传输的通信;在需要可靠性通信的场合;QQ等即是通讯通常采用TCP协议
UDP协议的特点:用户数据报的协议,是不可靠的无连接的协议,在数据发送前不要连接,从而提高了数据的传输效率(为什么会导致数据的可靠性降低:是因为UDP传输在文件的传输过程中没有备份文本的副本,在没有确定文件已经正确传输到达之前已经丢弃了数据的信息)
2)网络层遵循的是IP/ICMP/GMP协议
IP地址是在Internet中标识主机的,一般来说一个主机可以用唯一的IP地址来标识(另外无线网也有一个IP地址)从而可以在网络之间约定协议进行传输,IP地址一般有多种,这里主要的是IPV4,它遵循的IP协议的地址族是AF_INET,一般IP地址分为网络部分和主机部分,当信息通过IP传到主机可以通过掩码来分离网络部分和端口号,
端口号表示一台主机接收的数据报应该转交给那个进程来处理。 一个数据使用不同的传输协议,那么它的TCP和UDP传输端口号是独立的。
3)网络接口与物理层(数据链路层(ARP协议是的物理传输是以以太网数据传输的))
socket的重要性
1)socket是一种编程接口,原始被人们称为套接口后来演变为套接字,它是一种特殊的文件描述符,并不局限于TCP/IP协议。
普通的IO操作过程:
打开文件-》读写操作-》关闭文件
TCP/IP协议被集成到操作系统内核中,从而引入了新的“IO操作”,在OSI体系结构中socket位于会话层和传输层
网络通信的一般编程(端对端循环通信模式):
1)服务器端:
2)客户端:
只要大家遵循这种约定,抽象的理解也就是统一了接口的的含义,只要使用者遵循了这种约定,也就可以像之前一个计算机中两个进程之间的传输信息共享资源。
网络的特点体现了网络进程过程中的分层特点,每一层约定特定的协议进行传输,
网络的体系结构是指网络的层次结构和每层所使用的协议的集合
在网络体系结构中有两个重要的体系结构:OSI于TCP/IP
网络的互联促成了TCP/IP协议的产生
现在通用的一般是TCP/IP体系结构:
1)传输层遵循的是TCP/UDP协议
TCP协议属于传输层的协议其中也包括UDP和SCTP的协议
其中传输层的协议是来保证文件传输的可靠性(数据无丢失,数据无误,数据无乱序,数据无重复到达),
而TCP协议就是其中面向连接的传输层协议,使用范围有:适用于对传输性能要求高,以及大文件传输的通信;在需要可靠性通信的场合;QQ等即是通讯通常采用TCP协议
UDP协议的特点:用户数据报的协议,是不可靠的无连接的协议,在数据发送前不要连接,从而提高了数据的传输效率(为什么会导致数据的可靠性降低:是因为UDP传输在文件的传输过程中没有备份文本的副本,在没有确定文件已经正确传输到达之前已经丢弃了数据的信息)
2)网络层遵循的是IP/ICMP/GMP协议
IP地址是在Internet中标识主机的,一般来说一个主机可以用唯一的IP地址来标识(另外无线网也有一个IP地址)从而可以在网络之间约定协议进行传输,IP地址一般有多种,这里主要的是IPV4,它遵循的IP协议的地址族是AF_INET,一般IP地址分为网络部分和主机部分,当信息通过IP传到主机可以通过掩码来分离网络部分和端口号,
端口号表示一台主机接收的数据报应该转交给那个进程来处理。 一个数据使用不同的传输协议,那么它的TCP和UDP传输端口号是独立的。
3)网络接口与物理层(数据链路层(ARP协议是的物理传输是以以太网数据传输的))
socket的重要性
1)socket是一种编程接口,原始被人们称为套接口后来演变为套接字,它是一种特殊的文件描述符,并不局限于TCP/IP协议。
普通的IO操作过程:
打开文件-》读写操作-》关闭文件
TCP/IP协议被集成到操作系统内核中,从而引入了新的“IO操作”,在OSI体系结构中socket位于会话层和传输层
网络通信的一般编程(端对端循环通信模式):
1)服务器端:
#include #include #include #include #include #include #include #include #define MAXLEN 100 typedef struct sockaddr SA; int main () { int nr; int listenfd,connfd; char buf[MAXLEN]; struct sockaddr_in servaddr,cliaddr; socklen_t clilen; if ((listenfd = socket(AF_INET,SOCK_STREAM,0)) < 0){ perror("socket"); exit(-1); } bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = INADDR_ANY; servaddr.sin_port = htons(8888); if (bind(listenfd,(SA*)&servaddr,sizeof(servaddr)) < 0){ perror("bind"); exit(-1); } listen(listenfd,5); while(1){ clilen = sizeof(cliaddr); connfd = accept(listenfd,(SA*)&cliaddr,&clilen); printf("connection from %s ,prot %d\n",inet_ntoa(cliaddr.sin_addr), ntohs(cliaddr.sin_port)); memset(buf,0,sizeof(buf)); while((nr = recv(connfd,buf,MAXLEN,0)) >0){ printf("this is server read :%s\n",buf); send(connfd,buf,sizeof(buf),0); } close(connfd); } close(listenfd); return 0; }
2)客户端:
#include #include #include #include #include #include #include #include #define MAXLEN 100 typedef struct sockaddr SA; int main (int argc,char *argv[]) { int sockfd,nbyte; socklen_t clilen; struct sockaddr_in servaddr,cliaddr; char buf[MAXLEN]; if((sockfd = socket(AF_INET,SOCK_STREAM,0)) <0){ perror("sockfd"); exit(-1); } memset(&servaddr,0x00,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = INADDR_ANY; servaddr.sin_port = htons(8888); if (connect(sockfd,(SA*)&servaddr,sizeof(servaddr))< 0){ perror("conncet"); exit(-1); } do { fgets(buf,MAXLEN,stdin); write(sockfd,buf,MAXLEN); memset(buf,0,sizeof(buf)); read(sockfd,buf,MAXLEN); printf("this is client recv read :%s\n",buf); }while(strncmp(buf,"quit",4) != 0); close(sockfd); return 0; }
相关文章推荐
- Unix高级编程:网络基础、基于TCP以及UDP的编程模型、TCP高并发编程模型
- 学ACE以及网络编程的参考读物
- [转载]TCP的网络编程中一些典型的问题,以及一些分析和解决方案
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 套接字选项的使用 (心跳检测、绑定地址复用)
- udp 编码的connect 函数 ——unix 网络编程 第8章
- Unix 网络编程 基础接口
- 1000Linux/Unix系统、网络、编程电子书专题下载
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 简单TCP Socket 通信
- unix 网络编程 第三章
- Unix 网络编程 函数
- JAVA网络编程基础认识
- 关于UNIX 网络编程中存在的疑惑。先写下来,等待解决
- 潜心开始学习网络编程的第一步 ,UNP(Unix Network Programming)第一章,时间服务器到windows的移植
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 简单UDP Socket 通信
- 学ACE以及网络编程的参考读物
- 如何在linux系统下挂接(mount)光盘镜像文件、移动硬盘、U盘以及Windows网络共享和UNIX
- J2me网络编程以及网络游戏的实现
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 非阻塞的Socket通信Poll模型(多路复用), 实用Socket通信模板
- unix编程---网络I/O模型
- [零散篇]Java学习笔记---Java的Socket网络编程以及多线程