UDP 전송 방식 : 송신 측 호스트에서 송신 데이터가 생기면 곧바로 수신측 호스트에게 전송을 수행. 수신측에서 수신할 수 있는지 여부를 고려하지 않는다. 무조건 전송만 수행.
TCP 전송 방식 :
송신 측 호스트에서 송신 데이터가 생기면, 수신 측 호스트에게 SYN이라고 부르는 일종의 동기화 신호를 전송한다. 수신 가능 여부를 묻는 애용이다. 수신 측에서는 송신 측에서 보낸 SYN 신호에 대해 SYN/ACK 라고 부르는 신호로 응답을 보낸다. ACK는 송신 측 요청에 대한 수락을 의미하고, SYN은 수신측에서 역으로 송신측에게 동기화를 요청한다는 뜻이다. 만약 수신측에서 모종의 이유로 SYN/ACK 신호를 보낼 수 없다면, 송신측에서는 일정 시간 대기한 후 다시 SYN 신호를 보낸다. 송신측 호스트가 수신측 호스트로부터 SYN/ACK 신호를 받으면 다시 ACK 신호를 전송한다. 수신 측 동기화 여부를 요청하는 SYN 신호에 대한 응답이다. 이러한 3단계 동기화 과정을 마친 뒤 송신 측과 수신 측 사이에 실제 데이터를 주고 받는다.
=> 3단계 연결 설정
송신 측에서 데이터를 전송한 뒤 수신 측으로부터 ACK 신호를 받을 때까지 대기한다. 임의의 시간을 대기한 뒤에도 수신 측으로부터 ACK 신호가 없다면, 전송 중 오류가 발생했다고 판단하고 해당 데이터를 다시 전송해준다. 수신 측으로부터 ACK신호가 오면 송신 측에서는 비로소 그 다음 데이터를 전송해준다.
송신 측에서 데이터를 모두 전송했다면 FIN이라고 부르는 신호를 전송한다. 수신 측과 연결을 종료하겠다는 뜻이다. 그럼 수신 측에서 ACK/FIN이라고 부르는 신호로 응답을 보낸다. 송신 측에서는 수신 츠긍로부터 받은 FIN신호에 대한 응답으로 ACK 신호를 마지막으로 보낸 뒤 최종적으로 연결을 종료한다.
=> 3단계 연결 종료
만약, 송신측에서 FIN신호를 보낸 직후 수신측에서 아직까지 데이터를 처리하는 도중이라면, ACK 신호를 먼저 보내고 처리가 끝나면 그때서야 FIN 신호를 보낸다.
=> 4단계 연결 종료
(근데 일단 데이터를 다 받긴 해서 ACK 신호를 보냈는데 데이터를 처리하던 도중에 뭔가 문제가 생기면 어떡함?? 일정 시간이 지났는데도 FIN 신호가 안날아오면 송신측에서 다른 액션을 취하나?)
TCP방식이 이러한 3단계 연결 설정오가 3/4 단계 연결 종료를 수행할 수 있는 이유는 버퍼링 때문이다.
즉 UDP방식과 TCP 방식은 버퍼링의 유무에 따라 구분할 수 있다. UDP방식의 경우 버퍼링 기능이 없기 떄문에 일방적이 ㄴ전송만을 수행한다. 반면, TCP 방식의 경우 버퍼링 기능이 있기 때문에 송신자와 수신자 사이에 3단계 연결 설정과 3/4 단계 연결 종료 같은 일련의 상호작용이 가능하다.
따라서 UDP는 시간에 민감한 환경에서 사용하고, TCP방식은 안정적인 전송을 요구하는 환경에서 사용한다.
TCP 방식은 UDP방식과 달리 전송 중 오류등을 제어할 수 있는 반면, 버퍼링 과정이 필요하기 때문에 처리 지연일 발생할 수 밖에 없다.
netstat -n // tcp 방식에 따라 외부와의 연결 상태 확인 가능. 내부호스트와 외부 호스트 사이의 연결 상태를 확인
로컬 주소 : 자기 자신, 출발지 주소를 의미.
외부 주소 : 목적지 주소
포트번호 : IP주소 뒤에 붙은 번호 ex) 192.168.0.13:1049. 맥주소나 IP 주소 처럼 인터넷 공간에서 사용하는 주소. 16비트로 이루어진 주소. 즉, IP주소를 기준으로 맥주소가 물리적 주소에 해당한다면, 포드번호는 가상적 주소에 해당.
소켓 : 포트번호와 IP주소를 통칭. 운영체제가 논리적인 방식에 따라 서로 떨어진 두 대의 호스트를 연결해주는 인터페이스를 의미.
소켓 생성은 운영체제가 통신에 필요한 내부 자원을 할당한다는 의미이기도 하다.
구분 | 크기 | 구성체계 | 비고 |
---|---|---|---|
포트번호 | 16비트 | 단일 체계 | 전송 계층 |
IP 주소 | 32비트 | 네트워크 ID와 호스트 ID | 인터넷 계층 |
맥주소 | 48비트 | OUI와 일련번호 | 데이터 링크 계층 |
UDP 방식 : 버퍼링 기능이 없음.
TCP 방식 : 버퍼링 기능이 있음.
3단계 연결 설정 : TCP 방식에서 송신 전 수행하는 일련의 제어과정.
3/4 단계 연결 설정 : TCP 방식에서 송신 후 수행하는 일련의 제어 과정.
netstat -n 명령어 : 내부 호스트와 외부 호스트 사이의 연결 상태 확인.
포트 번호 : 16비트 체계로 이루어진 가상적이고 논리적인 주소.
소켓 : 운영체제가 논리적인 방식에 따라 서로 떨어진 두대의 호스트를 연결해주는 인터페이스.