网络编程基础名词

Socket

每一个Socket都可以描述为:(协议,本地地址,本地端口)。

一个完整的socket有一个本地唯一的socket号,由操作系统分配。

socket是面向C/S模型设计的,针对客户和服务器提供不同的socket系统调用。

客户随机申请一个socket,系统为之分配一个socket号;服务器拥有全局公认的socket,任何客户都可以向它发出连接请求和信息请求。(相当于一个想打电话的人可以在任何一台入网电话上拨号呼叫,而需要拥有一个已知的对方的电话号码)

socket接口是TCP/IP网络的APIsocket接口定义了许多函数或例程。

开发原理:
服务器端:使用ServerSocket监听指定的端口,端口随意指定(1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,建议使用大于1024的端口),等待客户连接请求。客户连接后,会话产生,在完成会话后,关闭连接。
客户端:使用socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话,会话完成后,关闭socket。客户端不必指定打开的端口,通常临时的动态分配一个1024以上的端口。

SOCKET socket ( int af, int type, int protocol );
第一个参数指定应用程序使用的通信协议的协议族,对于TCP/IP协议族,该参数置AF_INET
第二个参数指定要创建的socket类型,流套接字类型为SOCK_STREAM,数据报套接字类型为SOCK_DGRAM,原始套接字SOCK_RAW
第三个参数指定应用程序所使用的通信协议。
该函数如果调用成功就返回新创建的套接字的描述符,如果失败就返回INVALID_SOCKET。套接字描述符是一个整数类型的值,每个进程的进程空间里都有一个套接字描述符表,该表中存放着套接字描述符和套接字数据结构的对应关系。该表中有一个字段存放新创建的套接字的描述符,另一个字段存放着套接字数据结构的地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个套接字描述符表但是套接字数据结构都是在操作系统的内核缓冲里。


 

TCP/IP

TCPTransmission Control Protocol,传输控制协议。TCP是一种面向连接的、可靠的、基于字节流的运输层通信协议。

IPInternet Protocol,网络之间互连的协议。它是能使连接到网上的所有计算机网络实现互相通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。IP协议给因特网上的每台计算机和其它设备都规定了一个唯一的IP地址。

TCP/IP 即 传输控制协议/网间协议,为广域网(WAN)设计的。它们是互联网协议集(InternetProtocolSuite)中的两个协议,不过由于大家对它们的熟悉,以至于用TCP/IP这个词代替了整个协议集。

在因特网协议族中,TCP层是位于IP层智商,应用层之下的运输层。不同主机的应用层之间经常需要可靠的,像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可考的包交换。

应用层向TCP层发送用于网间传输的、用八位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功接收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据将会被重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

网络编程基础名词
TCP的三次握手

三次握手协议:
1) 建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
2) 服务器收到syn包,必须确认客户端的SYNack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
3) 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACKack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,开始传送数据。

 

网络编程基础名词
TCP连接的终止

四次挥手协议:
1TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送;
2) 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号;
3) 服务器关闭客户端的连接,发送一个FIN给客户端;
4) 客户端发回ACK报文确认,并将确认序号设置为收到序号加1


 

UDP

UDPUser Datagram Protocol,数据包协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,因此,当报文发送之后,是无法得知其是否安全完整到达的。在网络质量不好的环境下,UDP协议数据包丢失会比较严重。可是由于它不属于连接型协议,因而资源消耗少,处理速度快。所以,通常音频、视频和普通数据在传送时使用UDP较多,即使偶尔丢失一两个数据包,也不会对接受结果产生太大影响。QQ就是使用的UDP协议。

UDP报头由四个域组成,每个域占用2个字节:源端口号、目标端口号、数据报长度、校验值。

 

Telnet

TelnetTeletype Network,该协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。

 

NAT

NATNetwork Address Translation,网络地址转换,属于接入广域网技术,是一种将私有地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。NAT能解决IP地址不足的问题,还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

端口映射是NAT地址转换的一种,其功能就是把在公网的地址转翻译成私有地址,采用路由方式的ADSL宽带路由器拥有一个动态或固定的公网IPADSL直接接在HUB或交换机上,所有的电脑共享上网。


 

OSI

OSIOpen System Interconnect,开放式系统互连。OSI模型把网络通信的工作分为7层,分别是:

物理层:
   
规定通信设备在机械、电气、功能和过程方面的特性,用以建立、维护和拆除物理链路连接。
   
机械特性规定了网络连接时所需接插件的规格尺寸、引脚数量和排列情况等;电气特性规定了在物理连接上传输bit流时线路上信号电平的大小等;功能特性是指对各个信号先分配确切的信号含义;过程特性定义了利用信号线进行bit流传输的一组操作规程。
主要功能:为数据端设备提供传送数据的通路;传输数据;物理层的管理工作。
主要设备:中继器,集线器。

数据链路层:
    在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧在信道上无差错的传输,并进行各电路上的动作系列。
主要功能:为网络层提供数据传送服务;链路连接的建立、拆除、分离;帧定界和帧同步;帧的发放顺序控制;差错检测和恢复。
主要设备:二层交换机、网桥。

网络层:
    在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点,确保数据及时传送。
主要功能:为建立网络连接和为上层提供服务。包括:路由选择和中继;激活、终止网络连接;在一条数据链路上复用多条网络连接;差错检测与恢复等。
主要设备:路由器。

传输层:
    传输层的数据单元称作数据包,可是,与TCP协议相关时,成为段,而UDP协议时称为数据报。
   
这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的数据包和其它在传输过程中可能发生的危险。

会话层:
    在会话层及以上的高层次中,数据传送的单位不再另外命名,统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制,如服务器验证用户登录便是由会话层完成的。

表示层:
    这一层主要解决用户信息的语法表示问题,将想要交换的数据从适合于某一用户的抽象语法,转换为适合于OSI系统内部使用的传送语法,即提供格式化的表示和转换数据服务。数据的压缩和解压缩,加密和解密等工作也都由表示层负责。例如图像格式的显示。

应用层:
    应用层为操作系统或网络应用程序提供访问网络服务的接口。

 


 

ping

pingPacket Internet Grope,因特网包探索器,DOS命令,用于测试网络连接量的程序。

ping的工作流程:

ABCD四台机子,一台路由RA,子网掩码均为255.255.255.0,默认路由为192.168.0.1

    1、在同一网段内
   
在主机A上运行“ping 192.168.0.5”时,首先,ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“192.168.0.5”一起交给IP层协议,IP层协议以“192.168.0.5”为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并想办法得到192.168.0.5MAC地址,以便交给数据链路层构建一个数据帧。
    IP
层协议通过机器BIP地址和自己的子网掩码,发现它和自己属于同一网络,就直接在本网络内查找这台机器的MAC,如果以前两机通过信,在A机的ARP缓存表应该有B机的IP与其MAC的映射关系,如果没有,就发一个ARP请求广播,得到B机的MAC,一并交给数据链路层,后者构建一个数据帧,目的地址是IP层传过来的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们送出去。
   
主机B收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合,则接受;否则丢弃。接受后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一样。

    2、不在同一网段内
   
在主机A上运行“ping 192.168.1.4”后,开始跟上面一样,到了怎样得到MAC地址时,IP协议通过计算发现D机与自己不在同一网段内,就直接交给路由处理,也就是将路由的MAC取过来,至于怎样得到路由的MAC,跟上面一样,现在ARP缓存表找,找不到就广播。路由得到这个数据帧后,再跟主机D进行联系,如果找不到,就向主机A返回一个超时的信息。


 

ICMP

ICMPInternet Control Message ProtocolInternet控制报文协议,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通常与否、主机是否可到达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数句,但是对于用户数据的传递起着重要的作用。

ICMP协议对于网络安全具有极其重要的意义,其本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。
比如,利用操作系统规定的ICMP数据包最大尺寸不超过64KB的规定,向主机发起“Ping of Death”攻击,即ICMP数据包的尺寸超过64KB上限时,主机会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。
此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量的ICMP数据包会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理,疲于奔命。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值