TCP简单介绍
2017-07-02 20:26
169 查看
一:TCP简介
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议是同一层内 另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元( MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。
二:示例
TCP是通过socket和serversocket两个类来完成的,这两个类的具体方法在这里就不介绍了,想了解的可以查看api
服务端:
package net.TCP;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服务端serversocket
* @author jaques
*
*/
public class ServerTest {
public static void main(String[] args) throws IOException{
//创建对象,打开端口
ServerSocket ss=new ServerSocket(10000);
//石油accept方法获取客户端连接对象
Socket s=ss.accept();
String ip=s.getInetAddress().getHostAddress();
System.out.println(“客户端的ip:”+ip);
//Socket getInputStream获取字节输入流,读取客户端发来数据
InputStream in=s.getInputStream();
byte[] b=new byte[1024];
int len=in.read(b);
System.out.println(new String(b,0,len));
//Socket getOutputStream获取字节输出流,将数据写回客户端
OutputStream out=s.getOutputStream();
out.write(“收到”.getBytes());
//关闭
ss.close();
s.close();
in.close();
}
客户端
package net.TCP;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* 客户端Socket
* 1.创建Socket服务对象
* 2.Socket对象方法 getOutputStream获取字节输出流
* @author jaques
*
*/
public class SocketTest {
public static void main(String[] args) throws IOException{
//创建socket对象,参数为服务端地址和端口号
Socket s=new Socket(“127.0.0.1”,10000);
//使用Socket对象方法getOutputStream获取字节输出流
OutputStream out=s.getOutputStream();
//写入服务器
out.write(“你好TCP”.getBytes());
}
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议是同一层内 另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元( MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。
二:示例
TCP是通过socket和serversocket两个类来完成的,这两个类的具体方法在这里就不介绍了,想了解的可以查看api
服务端:
package net.TCP;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服务端serversocket
* @author jaques
*
*/
public class ServerTest {
public static void main(String[] args) throws IOException{
//创建对象,打开端口
ServerSocket ss=new ServerSocket(10000);
//石油accept方法获取客户端连接对象
Socket s=ss.accept();
String ip=s.getInetAddress().getHostAddress();
System.out.println(“客户端的ip:”+ip);
//Socket getInputStream获取字节输入流,读取客户端发来数据
InputStream in=s.getInputStream();
byte[] b=new byte[1024];
int len=in.read(b);
System.out.println(new String(b,0,len));
//Socket getOutputStream获取字节输出流,将数据写回客户端
OutputStream out=s.getOutputStream();
out.write(“收到”.getBytes());
//关闭
ss.close();
s.close();
in.close();
}
}
客户端
package net.TCP;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* 客户端Socket
* 1.创建Socket服务对象
* 2.Socket对象方法 getOutputStream获取字节输出流
* @author jaques
*
*/
public class SocketTest {
public static void main(String[] args) throws IOException{
//创建socket对象,参数为服务端地址和端口号
Socket s=new Socket(“127.0.0.1”,10000);
//使用Socket对象方法getOutputStream获取字节输出流
OutputStream out=s.getOutputStream();
//写入服务器
out.write(“你好TCP”.getBytes());
//使用Socket对象方法getInputStream获取字节输入流
InputStream in=s.getInputStream();
byte[] b=new byte[1024];
int len=in.read(b);
System.out.println(new String(b,0,len));
//关闭
s.close();
out.close();
in.close();
}
}
相关文章推荐
- TCP同步与异步及阻塞模式,多线程+阻塞模式,非阻塞模式简单介绍(转)
- java关于Tcp网络通讯简单介绍
- 【网络】常见通信协议HTTP、TCP、UDP的简单介绍
- TCP/IP简单介绍
- Tcp/ip 三次握手简单介绍,与断开四次握手介绍
- TCP同步与异步及阻塞模式,多线程+阻塞模式,非阻塞模式简单介绍
- TCP同步与异步及阻塞模式,多线程+阻塞模式,非阻塞模式简单介绍
- TCP同步与异步及阻塞模式,多线程+阻塞模式,非阻塞模式简单介绍
- TCP穿透原理简单介绍(转载)
- TCP同步与异步及阻塞模式,多线程+阻塞模式,非阻塞模式简单介绍
- TCP/IP(一):TCP/IP协议简单介绍
- TCP同步与异步及阻塞模式,多线程+阻塞模式,非阻塞模式简单介绍
- TCP同步与异步及阻塞模式,多线程+阻塞模式,非阻塞模式简单介绍
- TCP三次握手过程与对应的Berkeley Socket APIs的简单介绍
- tcpdump抓包 tcp 简单介绍
- tcp的简单介绍
- TCP的拥塞控制的简单介绍
- iOS开发之TCP/UDP/Socket简单介绍
- TCP/IP四层模型 简单介绍一下TCP/IP模型
- TCP同步与异步及阻塞模式,多线程+阻塞模式,非阻塞模式简单介绍