IP 통신
복잡한 인터넷 망 속에서 수 많은 노드(서버 컴퓨터)들을 지나 목적지 서버까지의 통신을 위해서는 규칙이 필요하다. 이 규칙은 IP(인터넷 프로토콜)이라는 주소를 컴퓨터에 부여하고 이를 이용하여 통신을 하는 것이다.
IP는 지정한 IP 주소(IP Address)에 패킷(Packet)이라는 통신 단위로 데이터를 전달한다.
- 패킷은 pack + bucket의 합성어로, '소포'로 비유할 수 있다.
IP 프로토콜의 한계
=> 이 한계를 보완하기 위하여 한 단계 상위 계층(네트워크 계층) 에서 TCP / UDP 등을 사용하여 문제를 해결할 수 있다.
[채팅프로그램에서 메시지를 보낼 때 일어나는 일]
TCP
TCP는 Transmission Control Protocol의 약자로 IP 네트워크의 두 컴퓨터 간의 연결 지향 통신을 위한 '전송 계층' 호스트 간 프로토콜이다.
TCP state (터미널에서 netstat 명령어를 통해 확인 가능)
LISTEN : 서버의 데몬이 떠서 접속 요청을 기다리는 상태
SYN-SENT : 로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태
SYN_RECEIVED : 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 하였지만 아직 클라이언트에게 확인 메시지는 받지 않은 상태
ESTABLISHED : 3 way-handshaking 이 완료된 후 서로 연결된 상태
FIN-WAIT1, CLOSE-WAIT, FIN-WAIT2 : 서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청하고 회신을 받아 종료하는 과정의 상태
TIME-WAIT : 연결은 종료되었지만 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어두고 있는 상태
CLOSING : 흔하지 않지만 주로 확인 메시지가 전송도중 분실된 상태
CLOSED : 완전히 종료
UDP
UDP는 User Datagram Protocol의 약자로, IP프로토콜에 Port, 체크섬 필드 정보만 추가된 단순한 프로토콜이다.
나는 친구와 PC방에서 스타크래프트를 할 때 UDP를 접했던 기억이 났다!
Reference