TCP vs UDP

TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 주요 통신 프로토콜로, 각각 다른 방식으로 데이터를 전송한다.

TCP (Transmission Control Protocol)

특징

  • 연결 지향(Connection-oriented)
    TCP는 통신을 시작하기 전에 연결을 설정한다. 이 연결은 3-way handshake 과정을 통해 이루어진다.
  • 신뢰성(Reliability)
    데이터 전송의 신뢰성을 보장한다. 데이터 패킷이 손실되거나 손상되면 재전송한다.
  • 순서 보장(Ordering)
    패킷이 순서대로 도착하도록 보장한다. 수신자는 전송된 데이터가 원래의 순서대로 도착하는 것을 확인할 수 있다.
  • 흐름 제어(Flow control)
    송신자와 수신자 간의 데이터 전송 속도를 조절하여 수신자가 데이터를 처리할 수 있도록 한다.
  • 혼잡 제어(Congestion control)
    네트워크 혼잡을 피하기 위해 송신 속도를 조절한다.

용도

  • 웹 브라우징(HTTP/HTTPS)
  • 이메일(SMTP, IMAP, POP3)
  • 파일 전송(FTP)
  • 원격 서버 접속(SSH, Telnet)

UDP (User Datagram Protocol)

특징

  1. 비연결 지향(Connectionless)
    UDP는 연결 설정 없이 데이터를 전송한다.
  2. 비신뢰성(Unreliable)
    데이터 전송의 신뢰성을 보장하지 않는다. 데이터 패킷이 손실되거나 손상되어도 재전송하지 않는다.
  3. 순서 미보장(No ordering)
    패킷의 순서를 보장하지 않는다. 수신자는 패킷이 순서대로 도착하지 않을 수 있다.
  4. 단순한 헤더 구조(Simple header)
    TCP에 비해 UDP의 헤더 구조가 단순하여 오버헤드가 적다.
  5. 빠른 속도(Low latency)
    TCP보다 전송 속도가 빠르고 지연 시간이 적다.

용도

  • 실시간 스트리밍(Media streaming)
  • 온라인 게임
  • VoIP(Voice over IP)
  • 방송(Broadcast)
  • DNS(Domain Name System) 조회

3-way Handshake는 TCP(Transmission Control Protocol)에서 연결을 설정하기 위해 사용하는 절차이다. 이 과정은 세 개의 단계로 이루어지며, 클라이언트와 서버 간의 신뢰할 수 있는 통신을 보장하기 위한 중요한 메커니즘이다. 3-way Handshake 과정은 다음과 같다.

  1. SYN (Synchronize)
    클라이언트가 서버에 연결 요청을 보낸다.
    이 요청에는 클라이언트의 초기 시퀀스 번호(ISN, Initial Sequence Number)가 포함된다.
    패킷의 플래그 필드에 SYN(Synchronize) 플래그가 설정되어 있다.
  2. SYN-ACK (Synchronize-Acknowledge)
    서버는 클라이언트의 SYN 요청을 수신하고, 이를 확인하는 응답을 보낸다.
    응답에는 서버의 초기 시퀀스 번호(ISN, Initial Sequence Number)와 클라이언트의 시퀀스 번호에 대한 확인 응답(ACK, Acknowledgment)이 포함된다.
    패킷의 플래그 필드에 SYN 및 ACK 플래그가 설정되어 있다.
  3. ACK (Acknowledge)
    클라이언트는 서버의 SYN-ACK 응답을 수신하고, 이를 확인하는 응답을 보낸다.
    이 응답에는 클라이언트의 시퀀스 번호와 서버의 시퀀스 번호에 대한 확인 응답(ACK, Acknowledgment)이 포함된다.
    패킷의 플래그 필드에 ACK 플래그가 설정되어 있다.
같은 카테고리의 다른 글
PuTTY / 다운로드 및 설치

PuTTY / 다운로드 및 설치

윈도우에 PuTTY를 다운로드하고 설치하는 방법은 두 가지가 있습니다. 하나는 Microsoft Store에서 다운로드 하는 것이고, 다른 하나는 PuTTY 홈페이지에서 다운로드 하는 것입니다. Microsoft Store에서는 putty로 검색한 후 설치를 하면 됩니다.(이 링크를 따라가도 됩니다.) PuTTY를 다운로드할 수 있는 사이트 주소는 아래와 같습니다. https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html   MSI 파일을 다운로드하여 설치하면 됩니다. Microsoft Store에서 또는 PuTTY 홈페이지의 MSI로 설치하면 아래처럼 PuTTY, ...

안드로이드 / 앱 / 카카오톡 / 채팅방 알림 끄는 방법

안드로이드 / 앱 / 카카오톡 / 채팅방 알림 끄는 방법

카카오톡 채팅 방에는 알림을 끄는 기능이 있다. 그런데, 분명 알림을 껐는데도 계속 알림이 온다. 이유는 전체 설정이 알림 설정 여부와 상관없이 모든 알림을 받는 것이기 때문이다. 이 설정까지 바꿔야 원치 않는 알림을 안 받을 수 있다. 으로 간다. 으로 설정을 변경한다.

phpMyAdmin / 이제 설정 파일은 암호화 문자열(blowfish_secret)을 필요로 합니다.

phpMyAdmin / 이제 설정 파일은 암호화 문자열(blowfish_secret)을 필요로 합니다.

phpMyAdmin을 업로드 하고 로그인 했을 때 다음과 같은 문구가 나오는 경우가 있습니다. 이제 설정 파일은 암호화 문자열(blowfish_secret)을 필요로 합니다. 해결하는 방법은 다음과 같습니다. phpMyAdmin 디렉토리에 있는 config.sample.inc.php를 config.inc.php로 이름을 바꾸어 저장합니다. 그리고 파일에 있는 다음 코드에 값을 채웁니다. $cfg = ''; 32개 보다 적은 문자를 넣으면 길이가 짧다는 메시지가 나오므로, 32개 이상의 문자를 입력합니다.

ThinkBook 16p G2 ACH / 메모

ThinkBook 16p G2 ACH / 메모

구입 이유 ThinkBook 16p 20YM0002KR를 구입했다. 뒷면에는 ThinkBook 16p G2 ACH라고 써 있더라. 이걸 산 이유는.... 해상도가 WQXGA(2560x1600). FHD(1920x1080)는 불편하다. 글자가 작아도 QHD 이상이 좋다. X-Rite Pantone 공장 캘리브레이션. 색을 잘 표현해준다고 한다. 디자인 작업을 하는 나에게는 중요한 것. NVIDIA 외장 그래픽 카드. 자주 하지는 않지만 동영상 편집 등을 할 때 필요하다. 물론 게임도... 메모리 ...

안드로이드 / 앱 / 카카오뱅크 / 외국에서 송금 받을 때 필요한 SWIFT 코드 알아내는 방법

안드로이드 / 앱 / 카카오뱅크 / 외국에서 송금 받을 때 필요한 SWIFT 코드 알아내는 방법

해외에서 송금을 받기 위해서는 계좌번호 말고도 다른 정보가 필요하다. 그 중 하나가 SWIFT 코드. 카카오뱅크의 SWIFT 코드를 알아내기 위해서는... 카카오뱅크 앱을 실행하고 를 누른다. 밑으로 내려가서 을 누른다. 를 누르면, SWIFT 코드를 확인할 수 있다. CITIKRSXKAK 해외에서 송금이 오면 사유를 확인하는 전화를 할 수도 있다고 한다. 소액이어도 전화가 올라나? ...

Brackets / Emmet 확장 기능 설치하는 방법

Brackets / Emmet 확장 기능 설치하는 방법

Emmet Emmet는 HTML과 CSS 코딩을 빠르게 할 수 있도록 도와주는 플러그인입니다. 많은 텍스트 에디터에서 Emmet을 지원하고 있고, Brackets도 확장 기능을 통해 사용할 수 있습니다. Emmet의 예전 이름은 Zen Coding입니다. Brackets에 Emmet 확장 기능 설치 를 엽니다. Emmet로 검색한 후 설치합니다. 테스트 HTML 형식의 문서를 새로 만듭니다. html>head+body를 입력하고 Tab 키를 누릅니다. 다음과 같이 바뀌면 제대로 설치된 것입니다. 참고 Emmet ...

위키(Wiki) / 위키 만드는 소프트웨어 / 미디어위키(MediaWiki)

미디어위키(MediaWiki)는 오픈 소스 위키 소프트웨어로, 위키백과(Wikipedia)와 같은 대규모 협업 프로젝트를 위해 설계되었습니다. PHP로 작성되었으며, MySQL 및 MariaDB를 데이터베이스로 사용합니다. 미디어위키는 다양한 기능과 확장성을 제공하여 복잡한 위키 사이트를 운영하는 데 적합합니다. 역사 미디어위키는 처음에는 위키백과 프로젝트를 지원하기 위해 개발되었습니다. 2002년, 매그너스 만스케(Magnus Manske)가 PHP로 작성한 초기 버전이 공개되었으며, 이후 개발자들이 지속적으로 기여하여 현재의 ...

FreeCommander / 파일 관리 프로그램 / 소개 및 사용법

FreeCommander / 파일 관리 프로그램 / 소개 및 사용법

FreeCommander는 윈도우에서 사용할 수 있는 무료 파일 매니저입니다. 듀얼 패널을 지원하며, 대부분의 작업을 키보드로 할 수 있고, 대량의 파일을 관리할 때 편리합니다. 압축(풀기), 일괄 이름 변경, 싱크(동기화), FTP 등 유용한 툴도 포함하고 있습니다.

크롬 / 유튜브 영상 끊김 해결하는 방법

크롬 / 유튜브 영상 끊김 해결하는 방법

노트북을 샀다. 모니터 주사율 144Hz의 게이밍 노트북. 별도의 모니터와 연결하여 듀얼 모니터로 사용하고 있는데, 예상치 못한 문제가 발생했다. 외부 모니터와 연결된 상태에서, 크롬 웹브라우저로, 노트북 모니터로 유튜브 영상을 보면 뚝뚝 끊긴다. 외부 모니터에서 볼 때는 문제가 없고... 주사율을 변경하는 등 여러 가지 방법을 시도해보았는데, 해결책은 크롬 설정에 있었다. 에서 [가능한 경우 하드웨어 가속 ...

크롬 / 주소 표시줄 검색 엔진 변경하는 방법

크롬 / 주소 표시줄 검색 엔진 변경하는 방법

크롬 웹브라우저의 주소 표시줄에 검색어를 입력하고 엔터키를 누르면 지정된 검색 엔진으로 검색하고 결과를 보여준다. 크롬의 기본 검색 엔진은 당연히 구글이다. 만약 주소 표시줄 검색 엔진을 변경하고 싶다면... 오른쪽 위의 점 세 개 아이콘을 클릭한다. 을 클릭한다. 왼쪽 메뉴에서 을 클릭한다. 주소 표시줄에서 사용되는 검색 엔진을 원하는 것으로 선택한다.