Network 6. TCP와 UDP

2024. 2. 8. 14:08Network

4계층 통신에

TCP와 UDP가 존재한다.

 

TCP는 신뢰성이 있고 연결 지향형이다.

UDP는 신뢰성은 없지만 전송이 빠르다.

 

이렇게 읽어보면 UDP가 좋지않아서 

사용하지 않을 것 같지만 아직까지도 많이 쓰이고 있는 프로토콜이다!

 

 

TCP를 그림으로 예를 들자면

위처럼 하나의 데이터(사진,메세지등)을 주고 받을때

다운로드후 확인 응답을 전송해

손실된 데이터를 확인하며

주고받는 형식이다.

 

UDP를 확인해보자

UDP는 굉장히 단촐하다...

하지만 보는 것과 같이 단순하기 때문에 전송이 빠르다는 장점이 있다.

 

 

우리가 메일, 메세지, 파일 다운로드 등의 작업을 할때는

그 파일의 무결성이 중요하기 때문에 TCP가 유용하지만

 

TV, 인터넷 방송, 전화 등의 서비스를 이용할때는

정확도도 중요하지만 시간차 없는 서비스도 굉장히 중요하기 때문에

UDP 서비스를 사용한다.

 

예를 들면 방송중에 화면이 뭉게지거나 끊겨도

송출 화면은

다시 받아오지 않고 최신 정보를 끊임없이 업데이트 하는 것과 같다!

 

 

 

또한 TCP는 

3-Way-handshake 방식의 통신을 사용하는데

이는 client 에서 SYN 패킷을 보내면

server에서 SYN+ACK(이전에 보낸 SYN에서 +1)을 재전송한다.

Server는 SYN이 들어오면 반드시 응답한다.

그다음 Client가 ACK (두번째 SYN에 +1) 을 보내기 때문에

3-Way-Handshake 방식이라고 불린다.

이 과정이 끝나면 Established 라는 문구가 뜨면서 

연결이 확립된 것이다.

 

 

 

이렇게 TCP/UDP 서비스는 

Port number를 사용해  컴퓨터안의 어떤 서비스에게 데이터를

보내면 좋을지를 식별한다.

 

굉장히 많은 포트가 존재하는데

20 FTP전송

21 FTP인증

22 SSH

23 TELNET

25 SMTP

53 DNS

80 HTTP

110 POP3

143 IMAP4

443 HTTPS

 

등등 대표적인 것들의 port 번호가 정해져있고

 

0~1023번은 잘알려진포트 (Well-known port)라고 하며

 

1024~49151번은 등록된 포트 (registered port) 라고 하고

제조 업체의 독자적인 서버 소프트 웨어가 클라이언트 서비스 요청을 대기할때 사용

 

49152~65535번은 동적포트 (Dynamic port)라고 한다.

서버가 클라이언트를 식별하기 위해 사용

 

이처럼 각 포트 번호를 사용해

서비스를 제공해준다.

 

 

포트 번호가 어떻게 사용되는지 알아보자

이전에 보았던 캡슐화 과정을 생각해보자

 

PC2 (서버)에서 PC1(클라이언트)에 어떤한 데이터를 요청했다 하자 (Request)

그럼 PC2에서 일어나는 과정은

 

 

 

5~7 계층에서 요청받은 데이터를 4계층으로 전송

 

4계층에선

데이터 앞에 TCP헤더를 추가하고 3계층으로 전송

 

| 출발지 포트번호 (랜덤) | 목적지 포트번호 | 데이터 |

-이것이 세그먼트다-

 

이때 목적지 포트번호는 데이터 종류에 따라 달라진다

웹서비스면 80이나 443번

FTP면 20이나 21번등

 

3계층에선

세그먼트 앞에 IP헤더를 추가하고 2계층으로 전송

 

| 목적지 IP addr | 출발지 IP addr | 세그먼트 |

-이것이 패킷이다-

1~2계층에선

패킷의 앞뒤에 이더넷 헤더, 이더넷 트레일러를 추가한다.

 

|프리앰블(preamble)| 목적지 MAC addr | 출발지 MAC addr | 타입 | 패킷 | FCS |

 

데이터에 프레임의 처음을 나타내는 프리앰블과

목적지, 출발지를 나타내는 헤더

비트 오류 체크에 사용되는 FCS를 추가해 프레임을 만든다.

 

그다음 이 프레임은 bit도 전환되어 PC1에게 물리계층을 통해 전달된다.

 

 

 

PC1에서는 1계층에서 7계층으로 상승하는 캡슐해제화가 이뤄진다!

 

 

 

 

역으로 다시 PC1(클라이언트)에서 PC2(서버)에대한 응답으로 데이터를 보낼때

보내기 위한 데이터를 캡슐화 할텐데

 

 

4계층에서의 작업이 

이전 4계층(PC2) 에서 랜덤하게 부여된 포트 번호가

목적지 포트가 되고

출발지 포트는 이전에 왔던 데이터의  목적지 포트가 된다.

 

만약 아까 부여된 목적지 포트가 HTTP 80번이라면

 

| 출발지 포트번호 (80번) | 목적지 포트번호 (이전 랜덤 번호) | 데이터 |

-이것이 세그먼트다-

후 똑같이 캡슐화해서 전송한다.

 

 

그럼 PC2는 받은 비트, 프레임을 캡슐 해제화 하면서

목적지 포트를 체크하며 자신이 할당한 번호이면

그 번호와 연결된 어플리케이션, 웹브라우저로 전달해주는 것이다!

 

 

 

 

4계층에서의 TCP 포트에 대해 알아보았다.

'Network' 카테고리의 다른 글

Network 8. Port Security  (0) 2024.02.13
Network 7. telnet과 ssh  (0) 2024.02.13
Network 5. 스위치와 라우터 그리고 라우팅  (0) 2024.02.07
Network 4. OSI 7 Layer  (0) 2024.02.06
Network 3. IP 클래스, 서브네팅  (0) 2024.02.02