3-Way Handshake 3-Way Handshake는 TCP/IP 프로토콜을 이용하여 통신을 진행할 때, 두 종단 간 정확한 데이터 전송을 보장하기 위해 연결을 설정하는 과정입니다. 클라이언트는 서버에 접속을 요청하는 SYN(a) 패킷을 보냅니다. 서버는 클라이언트의 요청인 SYN(a) 패킷에 대한 요청 수락 응답으로 ACK(a+1) 패킷을 보냅니다. 또한, 클라이언트도 포트를 열어달라는 SYN(b) 패킷을 보냅니다. 클라이언트는 ACK(a+1) 패킷과 SYN(b) 패킷을 받고 이에 대한 응답으로 ACK(b+1) 패킷을 보내며 연결이 성립됩니다. 왜 2 way가 아니라 3 way일까? TCP는 양방향성 연결이기 때문에 클라이언트에서 서버에게 자신의 존재를 알리고 패킷을 보낼 수 있는 것처럼 서버에서..
TCP 일반적으로 TCP와 IP를 함께 사용하는데, TCP는 패킷 추적 및 관리를 담당하고 IP가 데이터의 배달을 담당합니다. 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜입니다. 사전에 3-way handshake 과정을 통해 연결을 설정하고 통신을 시작합니다. 4-way handshake 과정을 통해 연결을 해제합니다. (가상 회선 방식) 흐름 제어, 혼잡 제어, 오류 제어를 통해 신뢰성을 보장하지만 이 때문에 UDP보다 전송 속도가 느립니다. 데이터의 전송 순서를 보장하며 수신 여부를 확인할 수 있습니다. 대부분의 웹 HTTP 통신, 이메일, 파일 전송 등에 사용됩니다. 흐름 제어 송신 측과 수신 측 사이의 데이터 처리 속도를 해결하기 위한 기법입니다. 만약 송신 측의 전송량 > 수신 측..
Socket Socket은 두 프로그램이 네트워크를 통해 서로 통신할 수 있도록 양쪽에 생성되는 링크의 단자입니다. TCP/IP Socket TCP는 두 프로그램 간 통신이 처음 시작될 때부터 끝날때까지 계속 연결을 유지하는 연결 지향(Connection oriented) 방식입니다. 스트림 소켓 방식 양쪽 어플리케이션 모두 데이터 주고 받기 가능 흐름 제어 등을 보장해주며 송신된 순서에 따른 중복되지 않은 데이터 수신 가능 IP와 포트 번호로 소켓을 연결하면 통신이 시작 byte 자료형으로 데이터 전송 TCP Client 구현 1. Socket에 서버 IP와 port 번호를 적어 객체를 생성하고 서버와 연결을 합니다. val socket = Socket("10.0.2.2", 8080) 2. 연결이 성공..