본문 바로가기

네트워크4

[Java] 네트워킹 (Socket, 양방향 통신) 네트워크 데이터 입력 및 출력 네트워크 대상(객체) 사이에 입/출력(InputStream, OutputStream)을 이용해서 데이터를 입력하고 출력한다 소켓(Socket) 네트워크상에서 데이터를 주고받기 위한 장치 서로 다른 겍체들간에 네트워크로 연결된 상태에서 입/출력을 하기 위한 장치를 소켓이라고 한다 Socket 클래스 서버는 클라이언트를 맞을 준비를 하고 있다가 클라이언트의 요청에 반응한다 import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class MainClass { public static void main(String[] args) { ServerSocket serverSocket.. 2020. 7. 4.
[Network] TCP와 UDP 비교 TCP와 UDP의 비교 TCP 대부분의 인터넷 응용 분야들은 신뢰성과 순차적인 전달을 필요로한다. UDP로는 이를 만족시킬 수 없으므로 다른 프로토콜이 필요하여 탄생한 것이 TCP이다. TCP(Transmission Control Protocol, 전송제어 프로토콜)는 신뢰성이 없는 인터넷을 통해 종단간에 바이트 스트림 전송하도록 설계되었다. TCP 서비스는 송신자와 수신자 모두가 소켓이라고 부르는 종단을 생성함으로써 이루어진다. TCP 에서 연결 설정(Connection Establishment)는 3-way handshake를 통해 행해진다. 모든 TCP 연결은 전이중(full-duplex), 점대점(point to point)방식이다. 전이중이란 전송이 양방향으로 동시에 일어날 수 있음을 의미하며 .. 2020. 4. 15.
[Network] TCP 3-way Handshake 연결 성립(Connection Establishment) 1) 클라이언트는 서버에 접속을 요청하는 SYN(a) 패킷을 보낸다. 2) 서버는 클라이언트의 요청인 SYN(a)을 받고 클라이언트에게 요청을 수락한다는 ACK(a+1)와 SYN(b)이 설정된 패킷을 발송한다. 3) 클라이언트는 서버의 수락 응답인 ACK(a+1)와 SYN(b) 패킷을 받고 ACK(b+1)를 서버로 보내면 연결이 성립(establish) 된다. 연결 해제(Connection Termination) 1) 연결이 성립된 상태이다. 2) 클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다. 2-1) 서버는 클라이언트의 요청(FIN)을 받고 확인의 의미로 ACK 메세지를 보낸다. 3) 데이터를 모두 보낼 때까지 잠깐 TIME_OUT이 .. 2020. 4. 6.
[Network] HTTP의 GET과 POST비교 GET과 POST는 둘 다 HTTP 프로토콜을 이용해서 서버에 무언가를 요청할 때 사용하는 방식입니다. 하지만 특징을 제대로 이해하고 목적에 맞게 알맞은 용도로 사용해야 합니다. GET GET 방식은 요청하는 데이터가 HTTP Request Message의 Header 부분의 url에 담겨서 전송됩니다. 그렇기 때문에 url 상에 ? 뒤에 데이터가 붙어 request를 보내게 되는 것입니다. 이러한 방식은 url 이라는 공간에 담겨가기 때문에 전송할 수 있는 데이터의 크기가 제한적입니다. 또한 보안이 필요한 데이터의 경우 데이터가 그대로 url에 노출되므로 GET 방식은 적절하지 않습니다.(ex. password) POST POST 방식의 request는 HTTP Request의 Body 부분에 데이터가.. 2020. 4. 5.