网络编程知识总结

 网络基础

TCP/IP参考模型

TCP/IP协议簇:分层的多协议的通信体系,是一个四层协议系统

网络接口层

ARP:IP——>MAC地址

RAPR:MAC——>IP

数据链路层(驱动程序)封装了物理网络的电气细节

网际层选择中间节点

IP:

ICMP:检测网络连接  (它使用IP提供的服务)

WAN(广域网)使用众多分级的路由器来连接分散的主机或LAN

网络层封装了网络连接的细节

传输层

TCP

UDP

SCTP(流控制传输协议)

传输层为应用程序提供了一条端到端的逻辑通信链路

应用层

Ping:是应用程序,不是协议,是调试网络环境的工具

telent:远程登陆协议,能使我们本地完成远程任务

OSPF:开放最短路径优先协议,是一种动态路由更新协议,用于路由器间的通信,已告知对方各自的路由信息

TCP

封装过程如下图:

IP、ARP、RARP:三种协议都使用帧传输数据(IP  0x800    ARP  0x806     RARP  0x835)

TCP、UDP、ICMP:都使用IP协议(IP的头部采用16位的协议字段来区分它们)

DNS、HTTP等应用层协议:通过TCP、UDP提供服务(TCP、IP头部中的16位端口号字段区分上层应用)

(DNS  53   HTTP  80)

ARP/RARP

ARP高速缓存:IP地址到MAC地址的映射

arp命令

$sudo arp -d IP地址          #删除IP对应的ARP缓存

$sudo arp -s IP地址 物理地址    #添加...

以太网帧

ARP请求和应答是从以太网驱动程序发出的,而并非从ARP模块直接发送到以太网上的

DNS查询和应答报文

套接字编程

字节序

    PC大多数是用小端字节序,又称主机字节序

大端字节序,又称网络字节序

socket地址的数据类型

通用socket地址(之根本)

struct sockaddr{

};

专用socket地址(更细)

TCP IPV4

struct sockaddr_in{

};

unix udp

struct sockaddr_un{

};

所有专用socket地址类型de变量在实际使用都需要转化为通用socketaddr

因为所有的socket编程接口都是用的地址参数类型都是sockaddr

地址族与协议族有完全相同的值,因此二者通常混用

setsockopt函数

解决server的TCP连接没有完全断开之前不允许重新监听的问题

  高级IO

pipe/socketpair

pipe用来创建管道,但是单个管道只能单向通信,一端用于读,而另一端用于写。如果要实

现进程双向通信,必须创建一对管道。而socketpair则可以用来创建双向通信的管道

dup/dup2

对输入文件描述符重定向,

select

poll

epoll


《完》

时间: 2024-10-18 10:19:31

网络编程知识总结的相关文章

【转】网络编程知识

网络编程知识 索引: 处理SIGCHLD信号 捕获信号时,注意处理被中断的系统调用 accept返回前连接夭折的处理 具有多个输入的处理 SIGPIPE的产生和处理 处理服务器主机崩溃 处理服务器主机崩溃重启 处理服务器主机关机 网络函数的可重入问题 套接口设置超时的方法 辅助数据 如何得知套接口接收队列中有多少数据? UNIX域协议 UNIX域套接口使用套接口函数的一些差别和限制 描述字传递机制 非阻塞套接口I/O 服务器程序常见设计方法 注意网络编程的移植性问题 注意对等方的不合理行为 开发

Android网络编程 知识框架

http://blog.csdn.net/wolf09311/article/details/41012379 1)Android平台网络相关API接口 a) java.net.*(标准Java接口) java.net.* 提供与联网有关的类,包括流.数据包套接字(socket).Internet协议.常见Http处理等.比如:创建URL,以及 URLConnection/HttpURLConnection对象.设置链接参数.链接到服务器.向服务器写数据.从服务器读取数据等通信.这些在 Java

ios网络编程(入门级别)-- 基础知识

在学习ios的过程中,停留在UI控件很长时间,现在正在逐步的接触当中!!!!!!在这个过程中,小编学到了一些关于网络编程知识,并且有感而发,在此分享一下: 关于网络请求的重要性我想不用多说了吧!!!对于移动客户端来说,网络的重要性不言而喻,常见的网络请求有GET, POST,今天来看一下两种网络请求的实现方式. 第一部分   小编的理解 一.两种网络请求--POST请求与GET请求的异同(这里小编只讨论的是异步链接) GET的语义是获取指定URL上的资源,将数据按照Variable = Valu

网络编程初步

***********************************************声明****************************************************** 原创作品,出自 "晓风残月xj" 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/xiaofengcanyuexj). 由于各种原因,可能存在诸多不足,欢迎斧正! *******************************************

网络编程(1)——轻松理解网络资源定位

一开始学习网络编程,听起来感觉很难.当时如果按照正确的方法和多理解多思考,学习网络编程其实很简单了.这个过程需要我们不断地里面和码例子,看请来龙去脉,相信如果大家坚持看完学习网络编程知识对大家会很有收获的.如果没有接触过计算机网络的基础知识,推荐一本教科书<计算机网络第六版>,这部书讲得挺不错的,对于入门学习计算机网络的朋友会很有帮助. 下面是一些基础的概念: 客户端:广泛来讲就是客户用的程序应用.日常中的手机软件QQ.微信.拨号器等等就是客户端. 服务端:形象点讲就是处理客户端程序应用发送过

TCP/IP的经典网络编程

                                                                         TCP/IP网络编程之四书五经                                                                                                                             孟岩 TCP/IP协议是眼下广域网和局域网通用的网络协议.因此.基于TCP

(46)LINUX应用编程和网络编程之一Linux应用编程框架

3.1.1.应用编程框架介绍 3.1.1.1.什么是应用编程 (1)整个嵌入式linux核心课程包括5个点,按照学习顺序依次是:裸机.C高级.uboot和系统移植.linux应用编程和网络编程.驱动. (2)典型的嵌入式产品就是基于嵌入式linux操作系统来工作的.典型的嵌入式产品的研发过程就是:第一步让linux系统在硬件上跑起来(系统移植工作),第二步基于linux系统来开发应用程序实现产品功能. (3)基于linux去做应用编程,其实就是通过调用linux的[系统API]来实现应用需要完成

Linux网络编程视频 百度网盘

Linux网络编程(总共41集)讲解Linux网络编程知识,分以下四个篇章.Linux网络编程之TCP/IP基础篇Linux网络编程之socket编程篇Linux网络编程之进程间通信篇Linux网络编程之线程篇Linux网络编程之TCP/IP基础篇01TCPIP基础(一)ISO/OSI参考模型TCP/IP四层模型基本概念(对等通信.封装.分用.端口)02TCPIP基础(二)最大传输单元(MTU)/路径MTU以太网帧格式ICMPARPRARP03TCPIP基础(三)IP数据报格式网际校验和路由04

[转帖]脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?

脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么? http://www.52im.net/thread-1732-1-1.html 1.引言 本文接上篇<脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手>,继续脑残式的网络编程知识学习 ^_^. 套接字socket是大多数程序员都非常熟悉的概念,它是计算机网络编程的基础,TCP/UDP收发消息都靠它.我们熟悉的web服务器底层依赖它,我们用到的MySQL关系数据库.Redis内存数据库底层依赖它.我们用微信和别