TCP UDP协议网络通讯

原创 2017年05月07日 14:21:57
最近开始面试了,简单整理一下,不涉及复杂 的代码逻辑。 
网络通讯的要素:
  1.IP地址:网络中设备的标识,不容易记忆,可以使用主机名
    本地回环地址127.0.0.1
   广播地址X.X.X.255
  2.端口号:用于标识进程的逻辑地址,是不同进程的标识。
     有效端口号:0-65535,其中0-1024是系统使用或者保留端口
  3.传输协议:通讯的规则,常见协议:TCP UDP
  
 常见网络架构:
  C/S:clientserver
  特点:
  1.程序员需要开发客户端和服务端
  2.维护麻烦
  3.将一部分运算移到客户端来完成,减轻服务器端的压力
  B/S:browserrver
  特点:
  1.程序员只需要开发服务端。客户端使用系统已有的浏览器即可
  2.维护简单,只需维护服务端
  3.所有的运算都在服务端完成
  目前流行B/S
  端口:物理端口
  逻辑端口--软件应用程序的数字标识
  
 传输协议:
  TCP传输控制协议
  面向连接,可靠的协议
  需要建立连接,所以效率低
  通过三次握手建立连接
  
  UDP数据报文包协议
  无连接,不可靠的协议
  不需要建立连接,所以效率高
  每个数据报大小限制在64K内
  UDP分为发送和接收
  TCP分为客户端和服务端
  
  Socket:是网络服务提供的一种机制,通信的两端都需要由Socket,数据在两个Socket之间通过IO传输,网络通信其实就是Socket之间进行通信,网络传输只能传输字节数据。

       下面是网络通讯的简单流程图

              

       1 TCP传输控制协议:

       面向连接,可靠的协议
       需要建立连接,所以效率低
       通过三次握手建立连接


       Socket:客户端socket
       ServerSocket:服务器socket
       TCP是面向连接的、可靠的传输协议,如果在没有服务端的情况下,客户端发送数据,会抛错,这种情况是不允许的

      下面介绍一些如何通过三次握手建立连接:

       

     a.请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN,在这个例子中为1415531521)。这个SYN段为报文段1。
     b.服务器发回包含服务器的初始序号的SYN报文段(报文段2)作为应答。同时,将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号
     c.客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认(报文段3)
    这三个报文段完成连接的建立。这个过程也称为三次握手(three-way handshake)
    SYN是同步序号,用来发起一个连接
    

     然后通过四次挥手断开连接

     a.现在的网络通信都是基于socket实现的,当客户端将自己的socket进行关闭时,内核协议栈会向服务器自动发送一个FIN置位的包,请求断开连接。我们称首先发起断开请求的一方称为主动断开方。
     b.服务器端收到请客端的FIN断开请求后,内核协议栈会立即发送一个ACK包作为应答,表示已经收到客户端的请求
     c.服务器运行一段时间后,关闭了自己的socket。这个时候内核协议栈会向客户端发送一个FIN置位的包,请求断开连接
     d.客户端收到服务端发来的FIN断开请求后,会发送一个ACK做出应答,表示已经收到服务端的请求
    FIN表示发送端完成发送任务(即断开连接)
    ACK表示确认序号有效
   
   2 UDP数据报文包协议:
      无连接,不可靠的协议
      不需要建立连接,所以效率高
      每个数据报大小限制在64K内

      DatagramSocket:表示用来发送和接收数据报包的套接字
      DatagramPacket:此类表示数据包

      数据包分为发送数据包和接收数据包
      凡是发送数据包,参数都是带着地址的

      UDP是无连接不可靠的协议,所以在没有接收端的情况下,发送端可以发送数据,且不会抛错,只不过是数据发丢了

PPP、TCP/IP、UDP协议之间的关系

PPP工作于第2层,TCP/IP工作于3-7层 PPP(Point to Point Protocol)点对点协议   它是用于串行接口的两台计算机的通信协议,是为通过电话线连接计算机和服务器...
  • u013385925
  • u013385925
  • 2016年04月22日 10:06
  • 1900

Network——Socket网络通信机制以及实现举例(TCP、UDP等)

两个传输协议之一:TCP TCP是Tranfer Control Protocol的 简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成...
  • SEU_Calvin
  • SEU_Calvin
  • 2016年07月22日 17:23
  • 12165

Qt开发:TCP和UDP网络通信

【原文】http://wuyuans.com/2013/03/qt-socket/ 这篇文章简洁清晰 TCP 客户端 #include QTcpSocket *client; char ...
  • u012234115
  • u012234115
  • 2015年06月13日 23:13
  • 1743

TCP对应的协议和UDP对应的协议

TCP和UDP的区别? TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。 TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。 TCP注重数据...
  • xinianbuxiu
  • xinianbuxiu
  • 2016年09月27日 23:02
  • 1072

tcp/udp/http协议详解

转载出处是: http://blog.chinaunix.net/uid-26833883-id-3627644.html   TCP、UDP、IP 协议分析 2013-04-2...
  • u013676711
  • u013676711
  • 2016年08月10日 16:48
  • 399

TCP和UDP协议的对比

UDP是一个简单的,不可靠的数据报协议。TCP是一个复杂的、可靠的字节流协议 UDP的特点如下: (1)无链接 (2)UDP使用尽最大努力交付,不保证可靠性 (3)UDP是面向报文的,UDP对应用...
  • yyf_it
  • yyf_it
  • 2016年08月14日 22:03
  • 1298

TCP协议和UDP协议简单实例

TCP协议创建步骤: import java.net.*; import java.io.*; /** 客户端负责发送数据: 步骤: 1、创建Socket对象,绑定IP和端口号 2、设置...
  • u011521890
  • u011521890
  • 2015年07月08日 09:52
  • 1254

http 协议是基于TCP还是UDP

参考: http://www.w3.org/Protocols/rfc2616/rfc2616.txt
  • robertsong2004
  • robertsong2004
  • 2014年11月07日 14:47
  • 2366

tcp udp http 多了解下各层协议及其作用

TCP/IP 数据链路层:ARP,RARP 网络层: IP,ICMP,IGMP 传输层:TCP ,UDP,UGP 应用层:Telnet,FTP,SMTP,SNMP.   OSI: 物理层:EI...
  • u010427692
  • u010427692
  • 2014年03月08日 11:38
  • 2051

基于TCP/UDP的应用层协议

1,基于TCP的有: Telnet(Teletype over the Network, 网络电传) ,通过一个终端(terminal)登陆到网络FTP(File Transfer Prot...
  • huangxy10
  • huangxy10
  • 2012年10月24日 11:28
  • 9126
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TCP UDP协议网络通讯
举报原因:
原因补充:

(最多只允许输入30个字)