이 글은 MDN과 킹무위키 그리고 많은 블로그들을 토대로 쓰여졌습니다.
틀린 내용이 있다면 아무튼 내잘못은 아닌듯함
TCP와 UDP는 네트워크 프로토콜의 한 종류입니다.
언뜻 생각하기엔 무조건 TCP가 좋은게 아닌가 싶지만
두 방식 모두 일장일단이 있기 때문에 사용처가 다른 프로토콜이라고 할 수 있습니다.
OSI 7계층구조로 보면 전송계층에서 이루어지는 프로토콜입니다.
OSI 7계층이 뭔지를 모르고 보더라도 전송 계층이라고 하면
아...뭔가를 전송하는구나...라고 예상할 수 있겠네요
맞읍니다 TCP,UDP는 무언가를 전송하기 위한 방법입니다.
TCP(Transmission Control Protocol) 전송제어 프로토콜
나무위키 설명에 따르면 이렇습니다
컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 프로토콜의 일종으로
보통 하위 계층에서 사용하는 IP와 엮어서 TCP/IP로 표현합니다.
MDN 설명에 따르면 이렇습니다.
두개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 네트워크 프로토콜
데이터와 패킷이 보내진 순서대로 전달하는 것을 보장해준다.
TCP의 역할은 에러가 없이 패킷이 신뢰할 수 있게 전달되었는지 보증해주는 것이다.
중요한 포인트만 짚어서 보면 이렇답니다.
두개의 호스트를 연결해주고 -> 연결형 프로토콜
데이터와 패킷이 보내진 순서대로 전달하는 것을 보장해주고 -> 데이터 전송순서 보장
에러가 없이 패킷이 신뢰할 수 있게 전달되었는지 -> 데이터 신뢰성 보장
보안되고 데이터 서순도 잘지켜주고 완전히 굉장한 것 같은데요
그래서 대부분의 경우 TCP/IP 프로토콜을 사용한다고 합니다.
TCP/IP 프로토콜이 사용되는 대표적인 경우는
채팅앱이라고 할 수 있습니다.
우리가 만약에 채팅을 하는데 내가 보낸 순서가 아니라 뒤죽박죽으로 채팅이 가거나
여러 메시지를 보냈는데 일부메시지가 누락된다면
소통에 어려움이 생길 수 있을 것이고
내 채팅이 보안이 취약해서 다른 사람들이 중간에 내 채팅을 훔쳐보는것을 원하지 않을 것이니까요
연결단계와 전송단계
3 way hand shake / 4way hand shake
TCP는 보안을 중시하기 때문에 연결단계라는게 존재합니다.
연결단계를 통해 서버와 클라이언트 서로의 승인이 있어야 데이터를 송수신할 수 있는거죠!
그리고 이 연결을 하는 단계에 사용되는 게 3 way hand shake이고
연결을 종료하는 단계에서 사용되는게 4 way hand shake 방식입니다.
궁금하시면 위키백과에 가보시길
TCP Header
TCP의 헤더부분은 다음과같이 이루어져있습니다.
TCP 제어, 전송에 관한 부분은 넘어가겠습니다.
관심있으신 분들은 더 찾아보세요..
UDP (User Datagram Protocol)
사용자 데이터그램 프로토콜
위키백과의 설명에 따르면 이렇습니다.
1. 전송 방식이 너무 단순해서 서비스의 신뢰성이 낮고
2. 데이터그램 도착 순서가 바뀌거나
3. 심지어는 통보 없이 누락시키기도 한다.
4. 심지어 TCP는 데이터를 수신했는지 확인하지만 UDP는 확인도 안하고 그냥 냅다 데이터를 송신합니다.
UDP는 일반적으로 오류의 검사와 수정이 필요 없는 애플리케이션에서 수행할것으로 가정한다.
여기까지보면 그냥 개노답 삼형제같아보이네요
하지만 이런 UDP도 장점이 있으니까 사용하는거겠죠..?
UDP의 장점
1. TCP에 비해 속도가 일반적으로 빠르고 오버헤드가 작다.
2. 헤더가 단순하다.
3. 데이터 효율을 중시한다.
4. 브로드캐스팅이 지원된다.
그래서 UDP는 주로 동영상 스트리밍 서비스
음성 인터넷 프로토콜, 온라인 게임 같이 데이터가 조금 누락되도 별로 상관이 없으면서
속도가 중요한 경우에 많이 사용되는 프로토콜이라고 합니다.
UDP 헤더
UDP의 헤더는 매우 간단하게 구성되어 있습니다.
출발지포트, 도착지포트, 길이, 체크섬 저게 다에요
어질어질하게 뭐가 많던 TCP에 비해 엄청 간단하네요
TCP와 UDP 차이점 비교
TCP | UDP |
연결단계와 연결해제단계가 존재함 | 그런거 없다. |
혼잡제어를 위해 slow start등의 알고리즘이 사용됨 | 그런거 없다 |
양방향으로 연결을 설정하고 데이터를 전송함 | 단방향송신 |
UDP보다 일반적으로 느림 | TCP보다 일반적으로 빠름 |
순서를 잘지켜준다. | 그런거 없다. |
메시지 수신을 확인한다.(신뢰성이 보장된다) | 그런거 없다.(신뢰성 보장 x) |
헤더가 UDP보다 복잡함 | 헤더가 단순함 |
엄청 간단한 부분들만 서술해서 깊은 부분은 다음에 다루도록 하겠습니다.
사실 깊은부분은 아직 제대로 이해도 못함 ㄹㅇㅋㅋ;;
'Network' 카테고리의 다른 글
www.google.com을 검색하면 무슨일이 생길까 (1) | 2023.04.20 |
---|---|
HTTP를 찍먹 해보자. (0) | 2023.04.01 |
RESTful API와 REST 성숙도 모델 (4) | 2023.03.29 |
CORS / SOP가 머임 (0) | 2023.03.25 |
json-server와 postman으로 REST API 실습 (3) | 2023.03.14 |