개발은 재밌어야 한다
article thumbnail
Published 2021. 8. 3. 00:10
TCP, UDP 개념 Network
반응형

기존의 IP프로토콜을 통해 데이터를 전송하는 과정에서는 몇가지의 문제가 있었습니다.

패킷 전달에서의 순서 문제가 발생한다거나 연결성을 보장할 수 없고 패킷이 소실되어 버리는 등의 문제가 일어납니다.

 

이러한 문제들을 해결하는 프로토콜이 TCP 프로토콜입니다.

우선 네트워크 전송의 데이터 표준을 정리한 것이 ISO 7계층이 있고 이 이론을 실제 사용하는 인터넷 표준이 TCP/IP 4계층이 있습니다.

 

채팅프로그램을 통해서 Hello라는 메시지를 전송하는 상황을 가정해보겠습니다.

먼저 SOCKET라이브러리를 통해서 OS계층에서 Hello라는 메시지에다가 TCP 정보를 씌웁니다.

그다음 TCP정보에다가 IP정보를 또 씌워줍니다. 그러한 데이터를 LAN카드를 통해서 물리적인 정보들을 포함해서 인터넷을 통해서 또 다른 서버에 전달합니다.

 

TCP / IP 패킷에서는 IP프로토콜에서 제공했었던 출발지와 목적지 IP정보에 더하여 출발지 PORT, 목적지 PORT, 순서, 검증에 대한 정보가 담겨있습니다. 그래서 IP 프로토콜에서 해결이 되지 않았던 순서문제나 검증에 대한 문제를 해결 할 수 있습니다.

 

TCP의 특징

전송 제어 프로토콜 (Transmission Controll Protocol)

 

  • 연결지향 - TCP 3 way handshake (가상 연결)
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP 프로토콜을 사용

 

1. 연결 지향 TCP 3 way handshake

TCP는 3way handshake를 통해서 서로의 연결을 확인할 수 있습니다.

1. 첫번째로 출발 서버에서 SYN을 보냅니다.

2. 목적 서버에서 정상적으로 동작한다는 의미로 SYN와 ACK를 보냅니다.

3. 그럼 출발 서버에서도 알겠다며 ACK를 보냅니다.

 

이렇게 3번의 연결 과정을 통해서 서로를 인식하게 되면 그 다음에 데이터를 전송하게 됩니다.

이렇게되면 중간에 서버에서 응답이 없게 된다면 연결이 되지 않게 되면서 데이터를 보내지 않게 됩니다.

(참고로 최근에는 ACK와 함께 데이터를 전송하기도 합니다)

 

 

2. 데이터 전달 보증

TCP에서는 데이터를 전송하면 서버에서 데이터를 잘 받았다는 전달해줍니다. 그러면 전송이 되지 않는다면 서버에 문제가 있음을 인지 할 수 있습니다.

 

 

3. 순서 보장

만약 패킷의 순서가 1,2,3 순서로 보냈는데 받았을때 1,3,2 순서로 도착했다면 잘못 보내진 2번 패킷부터 다시 보내라고 요청을 합니다.

 

 

이러한 과정들을 이유로 TCP는 신뢰할 수 있는 프로토콜이라고 합니다.

 

UDP(User Datagram Protocol) 사용자 데이터그램 프로토콜

  • 하얀 도화지에 비유 (기능이 거의 없음)
  • 연결 지향 - TCP 3 way handshake 지원 X
  • 데이터 순서 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • 정리 
    • IP와 거의 같다. +PORT + 체크섬 정도만 추가
    • 애플리케이션에서 추가 작업 필요

 

 

해당 포스팅은 김영한님의 HTTP강의를 토대로 만들어진 포스팅입니다.

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다. 📣 확인해주세요!본 강의는 자바 스

www.inflearn.com

 

 

 

 

 

 

 

 

 

 

 

반응형

'Network' 카테고리의 다른 글

버추얼박스(VirtualBox) 설치 및 구동 (CentOS 8 버전)  (0) 2022.01.16
Port란?  (0) 2021.11.30
IP(인터넷 프로토콜)이란?  (0) 2021.07.23
profile

개발은 재밌어야 한다

@ghyeong

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!