TCP

앞서 IP프로토콜에서 발생한 수많은 문제들에 대해 알아보았다.

요약하면

1. 비연결성

패킷이 소실될 가능성이 있다.

2. 비신뢰성

패킷이 섞여서 순서대로 보내지지 않을 가능성이 있다.

3. 프로그램 구분

같은 IP를 사용하는 PC에서 서버에 통신하는 애플리케이션이 2개 이상이라면! 이를 구분할 수 없다.

이를 해결하기 위해 TCP프로토콜이 등장한다.

IP가 메시지를 담고있는 IP패킷에는 출발지 IP와 목적지 IP, 기타 정보가 담겨져 있다.
그리고 그 안에 있는 TCP프로토콜에 TCP패킷에는 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증정보 등이 들어가게 된다.

즉 IP패킷이 있고 그 안에 TCP패킷을 넣어서 보내는 것이다.

이 TCP에는 3가지 특징이 있는데 물론 더 많은 기능이 있다!

1. 연결지향

2. 데이터 전달 보증

3. 순서 보장

1.연결지향

TCP 3 way handshake(가상연결)

SYN, SYN+ACK, ACK 3가지 순서로 데이터를 전송하게 되는데

SYN : 접속요청
ACK : 요청수락이다.

  1. 클라이언트가 서버에 접속을 요청한다.
  2. 서버는 클라이언트에 접속을 요청한다. 그리고 받은 접속요청을 수락한다.
  3. 클라이언트는 서버에서 받은 접속요청을 수락한다.
  4. 클라이언트는 데이터를 전송한다.

이 단계를 거친다면 서버가 다운되어있다고 가정했을 때 클라이언트는 서버에 데이터를 전송하지 않는다!

최근 최적화가 되면서 3번 단계에서 데이터를 전송하기도 한다.
그리고 이는 논리적 연결이지 나를 위한 랜선이 연결된 것이 아님!

2. 데이터 전달 보증

TCP에서는 데이터를 전송하면 서버에서 데이터를 잘 받았다고 보내줌. 서버에서 응답을 해준다!

3. 패킷 순서 보장

TCP에서 전송 제어 정보와 순서 정보와 검증 정보가 추가되어있기 때문에
서버에서는 순서에 맞지 않게 메시지가 온다면 클라이언트에게 재전송을 요청한다.

이 과정을 거치기 때문에 TCP를 흔히 신뢰할 수 있는 프로토콜이라고 말한다.

UDP

UDP는 IP계층 바로 위에 있는 프로토콜이다
기능이 거의 없어서 하얀 도화지에 비유를 하는데
IP프로토콜과 거의 같지만 PORT, 체크섬 정보가 추가된다.
PORT만 다양하게 있으면 사실상 1개의 IP에서 다양한 애플리케이션을 실행시킬 수 있다.
우리가 1개의 PC에서 오라클을 8080 포트번호로 사용하고 마리아DB를 3306 포트로 사용하듯

그렇다면 왜 TCP가 있는데 UDP를 사용하는가?

TCP는 3way hand shake 단계를 거치기 위해 시간과 자원이 소모된다.
TCP는 신뢰할 수 있는 영역이지만 최적화가 불가능한 영역이다.
그러나 UDP는 비교적 전송 속도도 빠르고 최적화가 가능한 영역이기 때문에
최근 각광받고 있는 프로토콜이라고 알고 있으면 된다.

다음은 PORT와 DNS에 대해 알아보고 인터넷 네트워크에 대한 정리를 해보려한다.

출처 : 모든 개발자를 위한 HTTP 웹 기본 지식(김영한 강사님 인프런 강의)

profile
비전공자 개발초보입니다!

0개의 댓글