物理层:在信道上传输原始比特流;
数据链路层:主要任务是加强物理层传输原始比特流的功能,使之对应的网络层显现为一条无错线路。发送包把输入数据封装在数据帧,按顺序传送出去并且处理接收方回送的确 认信。
网络层:关系子网的一个运行控制,其中一个关节的问题是确认从源端到目的段如何选择路由。 路由选择,拥塞控制与网络互连
传输层:从会话层接受数据,并且把其分成较小的单元传递给网络层。
会话层:允许不同机器上的用户建立会话关系。
表示层:完成某些特定的功能。
应用层:包含大量人民普遍需要的协议。
应用层 http smtp pop3 telnet snmp ftp dhcp tftp ssh
传输层 tcp udp spx
网络层 ip ipx ‘apple talk’
数据链路层 802.3、802.4、802.5、802.11、FDDI、ATM
物理层 v.24 v.35 RS232 RS485
传输协议有两种UDP和TCP
//
TCP: TCP连接像打电话,传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数居前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发、丢弃重复数据、检验数据、流量控制等功能,保证数据能从一段传到另外一段。
UDP:是用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传递给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传递数据报前不用在客户和服务器之间建立一个连接,且,没有超时重发等机制,故而传输速度快。
一、TCP与UDP的优缺点
①TCP传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端的可靠传输。对可靠性要求较高的应用层协议,如FTP、Telnet、SMTP、HTTP、POP3
②UDP用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。对实时性要求较高的应用层协DNS、SNMP、QQ
③表格对比:
TCP | UDP | |
是否面向连接 | 面向连接 | 无连接 |
数据传输可靠性 | 可靠的 | 不可靠的 |
应用场合 | 传输大量的数据 | 少量数据 |
速度 | 慢 |
快
|
IP:而IP是给因特网的每一台联网设备规定一个地址;
ICMP: (因特尔控制消息协议)
ICMP与IP位于同一层,它被用来传送IP的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP的‘Redirect’信息通知主机通向其他系统的更准确的路径,而‘Unreachable’信息则指出路径有问题。另外,如果路径不可用了,ICMP可以使TCP连接‘体面地’终止。PING是最常用的基于ICMP的服务。SNMP协议
SNMP(Simple Network Management Protocol,简单网络管理协议)的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。
如何编写Socket套接字?
如果你要编写一个服务程序,先调用Socket()创建一个套接字,调用bind()绑定IP地址和端口,
然后启动一个死循环,循环中调用accept()接受连接;
对于每一个接受的连接,可以启动多线程方式进行处理,在线程中调用send()、recv()发送和接受数据,
如果你写一个客户端程序:
先调用socket()创建一个套接字,
然后调用connecct()连接服务器,
之后调用send()、recv()发送和接受数据了。
服务器段程序编写:
1,调用ServerSocket(int port ) 创建一个服务器端套接字,并绑定到指定端口上。
2,调用accept(),监听连接请求,则接受连接,返回通信套接字。
3,调用Socket类的getOutStream()和getInputStream()获取输出流和输入流,开始网络数据的发送和接受。
4,关闭通信套接字Socket.close()。
客户端程序编写:
1,调用Socket()创建一个流套接字,并连接到服务器段。
2,调用Socket类的getOutStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接受。
3,关闭通信套接字Socket.close().
在服务端,我们需要大致按照以下步骤:
1.初始化socket库。
2.绑定本机地址和端口。(服务端特有)
3.监听端口,等待客户端连接。
4.当有客户端连接,进行处理,但后继续监听或者结束程序。
5.退出程序,关闭socket,终止对socket库的使用。
在客户端,我们需要按照以下步骤:
1.初始化socket库。
2.设置远程主机的地址和端口信息,并连接。
3.等待服务端的响应
4.当服务端响应,进行处理。
5.退出程序,关闭socket,终止对socket库的使用。
下面引用一张来自网络的图片,直观的说明通信的过程。
80端口用于网页浏览;HTTP
FTP服务的21端口
25端口简单邮件传输协议;
135端口分配给RPC(远程过程调用)服务;
动态端口1024~15535;
TCP端口:Telnet服务的23端口 25 80
UDP端口:DNS服务的53端口、SNMP(简单网络管理协议)服务的161端口,QQ使用的8000和4000端口;