网络编程
hj605635529
海阔任鱼跃,天高任鸟飞!!
展开
-
数据链路层三个问题---封装成帧、透明传输、差错检查
数据链路层:前言:数据链路层使用的信道主要有以下的两种类型: 1. 点对点信道。这种信道使用一对一的点对点信道方式。 2. 广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。通常我们使用的更多的是点对点的信道,所以在这里我们需要了解一些相关的概念。点对点信道的数据链路层在进行通信的时步骤如下: 1. 节点A的数据链路层把网络层交下来的IP数据报添加首原创 2017-05-14 16:08:22 · 13456 阅读 · 0 评论 -
connect方法会阻塞,请问有什么方法可以避免其长时间阻塞?
步骤1: 设置非阻塞,启动连接实现非阻塞 connect ,首先把 sockfd 设置成非阻塞的。这样调用connect 可以立刻返回,根据返回值和 errno 处理三种情况:(1) 如果返回 0,表示 connect 成功。(2) 如果返回值小于 0, errno 为 EINPROGRESS, 表示连接 建立已经启动但是尚未完成。这是期望的结果,不是真正的错误。原创 2017-07-02 21:14:11 · 7735 阅读 · 0 评论 -
udp调用connect的作用总结
1:UDP中可以使用connect系统调用2:UDP中connect操作与TCP中connect操作有着本质区别.TCP中调用connect会引起三次握手,client与server建立连结.UDP中调用connect内核仅仅把对端ip&port记录下来.3:UDP中可以多次调用connect,TCP只能调用一次connect.UDP多次调用connect有两种用途:1,指定一个新的ip&原创 2017-07-02 20:42:07 · 1303 阅读 · 0 评论 -
I/O多路复用之poll
pollpoll和select类似,不过在一些方面改善了select的弊端。它也是在指定的时间进行轮询文件描述符,查看是否有就绪时间发生。和上次一样,我们先来看一下poll系统调用。 int poll(struct pollfd *fds, nfds_t nfds, int timeout);11fds是一个pollfd的结构体数组。struct pollfd原创 2017-06-12 16:10:35 · 268 阅读 · 0 评论 -
I/0多路复用 select、poll、epoll之间的区别总结
select()和poll() IO多路复用模型select优点:1.一次可以等待多个文件描述符,减少了平均等待时间2.客户越来越多时,减轻了进程调度的压力(相较于多进程多线程服务器)select缺点:1.能监听的文件描述符有上限,这个上限是由fd_set决定的。2.它返回的只是就绪事件的个数,要判断是那个事件满足,需要遍历文件描述符。3.select监听的集合是输原创 2017-06-12 22:34:59 · 2773 阅读 · 0 评论 -
I/0多路复用之epoll
epoll介绍epoll的实现和select与poll的实现有很大的差异,epoll不像select和poll一样通过一个系统调用来完成任务,通过一组函数,epoll把用户关心的文件描述符的事件放在内核的一个事件表中,这样就不用每次都进行向内核传递文件描述符了。epoll使用一个额外的文件描述符来表示内核的事件表,所以这里第一个函数epoll_create就是做这个的。epol原创 2017-06-12 14:41:02 · 303 阅读 · 0 评论 -
I/O多路复用之select函数
select介绍我们先来看一下select的接口。 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);1234512345从上面的这些接口我们应该能有写认识,首先我么来看s原创 2017-06-07 16:24:46 · 390 阅读 · 0 评论 -
使用socketpair⽤来创建双向通信的管道
#include#include#include#include#include#includeint main(){ pid_t pid; int fd[2]; socketpair(AF_UNIX,SOCK_STREAM,0,fd); pid = fork(); if(pid < 0) { perror("fork"); exit(1); } els原创 2017-06-02 23:54:32 · 347 阅读 · 0 评论 -
socket之TCP多线程客户服务器编程
实现基于TCP的C/S服务模型,服务器将客户端的输入回显给客户端。服务器:#include#include#include#include#include#include#includestatic void usage(const char *str){ printf("Usage:%s [IP][PORT]\n",str);}static int start原创 2017-06-02 23:46:17 · 426 阅读 · 0 评论 -
socket之tcp多进程客户服务器编程
实现基于TCP的C/S服务模型,服务器将客户端的输入回显给客户端。服务器:#include#include#include#include#include#includestatic int startup(const char *_ip,int _port){ int sock = socket(AF_INET,SOCK_STREAM,0); if(sock < 0原创 2017-06-02 23:34:33 · 391 阅读 · 0 评论 -
socket编程之udp客户服务器
实现基于udp的C/S服务模型,服务器将客户端的输入回显给客户端。服务器:#include#include#include#include#include//#include#includestatic void usage(const char * str){ printf("Usage:%s [IP] [PORT]\n",str);}// ./server原创 2017-06-02 23:23:27 · 384 阅读 · 0 评论 -
socket编程之TCP单进程客户服务器
实现基于TCP的C/S服务模型,服务器将客户端的输入回显给客户端。服务器代码:#include#include#include#include#include#include#include#includevoid usage(const char *str){ printf("%s [IP][PORT]\n",str);}//./serv 127.0.0.原创 2017-06-02 23:07:11 · 1267 阅读 · 0 评论 -
TCP报文首部、三次握手与四次挥手以及四种定时器解析
关于TCP协议是网络中很重要的一个协议,这个协议自然需要好好看看。我们从TCP的首部来一点一滴的深入理解这个协议。1. TCP首部介绍源端口(source port)16位的字段,定义了发送这个报文段的主机中的应用程序的端口号。 目的端口(destination port)16位的字段,定义了接收这个报文段的主机中的应用程序的端口号。 序列号(seque原创 2017-05-19 14:08:48 · 757 阅读 · 0 评论 -
TCP的端口分类
TCP的端口(用16位端口号来标示一个端口)注意:端口只具有本地意义,只是为标志本计算机应用层中的各个进程在和运输层交互时的层间接口,在因特网上不同主机中,相同的端口号没有关联。由此可见,两个计算机的进程要互相通信,不仅必须知道对方的IP地址(为了找到对方的计算机),而且还要知道对方的端口号(为了找到对方计算机中的应用进程)TCP的端口号可分为两大类:1、服务器端使用的端口号(原创 2017-05-19 12:32:23 · 4178 阅读 · 1 评论 -
常见的路由条目生成算法
前言:路由:数据包从源地址到目的地址所需要经过的路径,由一系列节点组成。 路由节点:一个具有路由功能的主机或者路由器,维护一张路由表,通过查询路由表来决定向那个节点发送数据包。 路由表:由很多路由条目组成,每个条目都指明去往某个网络的数据包应该经由哪个接收和发送,其中最后一个是缺省路由条目。 路由条目:路由表中的每一行,每个条目主要由网络地址、子网掩码、下一跳地址、发送接收四部分组原创 2017-05-18 22:58:03 · 2804 阅读 · 0 评论 -
代理服务器和网络地址转换NAT
NAT(网络地址转换)工作在网络层,对数据包进行地址转换后再转发。解决网络地址不够用,通过隐藏局域IP地址来保护网络安全。NAT路由器(需要装入NAT软件的路由器),至少有一个有效的外部全球IP地址,所有使用本地地址主机(局域网内192.168.0.0所有主机的IP地址都是本地IP地址192.168.x.x)和外网通信时都要在NAT路由器上将其本地地址转换成全球IP地址,才能与因特网连接。原创 2017-05-18 21:54:20 · 1893 阅读 · 0 评论 -
计算机网络之ARP协议
引言ARP(Address Resolution Protocol,地址解析协议)是将IP地址解析为MAC地址(物理地址)的协议。在局域网中,当主机或其他网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP地址),但是仅有IP地址是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送。因此发送方还需要有接收方的物理地址,也就需要一个从IP地址到物理地址的映射,ARP原创 2017-05-14 17:34:47 · 1801 阅读 · 0 评论 -
centos6.5下如何搭建一个ftp服务器和使用客户端
一:搭建服务器:1.下载vsftpd软件:2.以root身份进入/etc/vsftpd目录:3.修改vsftpd.conf这个配置文件(千万记住不要在等号两边留空格)4.重启vsftpd服务:至此服务器端就搭建完毕了,就这么简单二:客户端使用:centos下ftp客户端需要自己安装,ubuntu下下载vsftpd默认装上了原创 2017-07-04 10:03:04 · 8787 阅读 · 0 评论