TCP/UDP에 대해서 설명해주세요.
우선 프로토콜은 데이터 통신을 위해 사용되는 표준화된 형식이며, 데이터의 패킷 구조, 전송 방법, 통신 프로세스 등을 정의합니다. 네트워크 프로토콜은 TCP, UDP, HTTP, FTP, SMTP, DNS 등 종류가 있으며 OSI 7 계층 중 데이터 전송 계층에 해당하는 프로토콜은 TCP, UDP가 있습니다. 이 둘은 데이터를 전송하는 방법에 차이가 있습니다.
•
TCP는 신뢰성 있는 데이터 전송을 제공하는 연결 지향형 프로토콜입니다. 데이터의 순서를 보장하고, 에러 검출 및 복구, 흐름 제어, 혼잡 제어 기능을 제공하여 안정적인 데이터 전송을 보장합니다. 주로 웹 페이지의 HTTP 통신, 이메일 전송 등에 사용됩니다.
•
UDP는 비연결형 프로토콜로, TCP보다 더 단순하고 경량화된 특징을 가지고 있습니다. 데이터 전송의 신뢰성보다는 속도와 지연 시간이 중요한 경우에 사용됩니다. 신뢰성과 흐름 제어가 비교적 필요하지 않은 애플리케이션에 적합합니다. 예를 들어 DNS 조회, 스트리밍 서비스, 실시간 게임 등에 사용됩니다.
추가질문 :
연결지향형이란 무엇을 말하나요?
연결 지향형 프로토콜은 클라이언트와 서버가 1대1 연결을 통해 패킷 교환 방식을 사용한다는 의미입니다. 추가적으로 여기서 패킷이란, 인터넷 내에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해서 데이터를 여러 개의 조각들로 나누어 전송을 하는데 이때, 이 조각을 패킷이라고 합니다. 데이터 전송을 하기 전에 연결 확인용 데이터인 SYN, ACK 패킷을 서로 교환하며 클라이언트와 서버가 정확히 서로 연결된 것을 확인한 이후 데이터를 전송하게 되기 때문에 연결 지향형이라고 합니다. TCP는 데이터를 패킷으로 나누고 헤더에 목적지 정보 등을 담아 재조립하는 역할도 합니다.
추가질문 :
3-way, 4-way handshaking은 무엇인가요?
TCP는 클라이언트와 서버가 연결이 필요합니다. 이때 3-way handshaking 과정을 거치면서 목적지와 수신지를 서로 송신, 응답하며 정확하게 추적합니다.
3-way handshake 연결 과정을 간단히 표현하면 마치 의사 전달을 하는 사람의 대화와 유사하게 생각 할 수 있습니다. SYN이란 것이 질문 ACK가 답변이라 가정하면 먼저 질문한 클라이언트는 대기, 서버는 질문에 대한 답변, 답변을 받은것을 확인하면 알았다고 답변, 답변을 받은것을 확인하는 것과 같이 패킷과 식별 번호 등을 통해 네트워크 상에서 커뮤니케이션과 같은 과정으로 서로가 연결되는 과정입니다. 클라이언트와 서버가 모두 상대의 답변을 확인하면 ESTABLISHED 상태로 연결 됩니다.
4-way handshaking은 3-way와 반대로 연결 해제와 관련된 것으로 SYN이 아닌 FIN이란 질문을 하고 서로 모두 답변을 확인한 상태에서 각각 CLOSED상태로 연결을 해제하게 됩니다.
추가질문 :
그럼 UDP는 이런 연결이 없는것인가요?
UDP는 연결을 설정하지 않고 데이터를 전송하기 때문에 목적지 정보는 전송측에서만 결정됩니다. UDP 패킷에는 목적지의 IP 주소와 포트 번호가 명시적으로 포함되어 있습니다. 이 정보를 사용하여 네트워크를 통해 목적지로 데이터를 전송합니다.
TCP와 달리 연결 설정 단계가 없으므로, UDP는 목적지에 데이터를 간단히 전송하고, 목적지에서는 해당 패킷을 수신하여 처리합니다. 이는 일반적으로 단방향 통신입니다.
추가질문 :
그 외 프로토콜도 간략하게 설명해주세요.
ICMP (Internet Control Message Protocol)
ICMP는 네트워크 장치 사이에서 제어 메시지를 전송하는 데 사용되는 프로토콜입니다. 네트워크 상태 모니터링, 네트워크 에러 및 경로 문제 진단, 패킷 손실 여부 확인 등에 사용됩니다. 주로 네트워크 진단 및 도구에 활용됩니다.
ARP (Address Resolution Protocol)
ARP는 IP 주소를 해당하는 네트워크 인터페이스의 물리적 MAC 주소로 매핑하기 위해 사용되는 프로토콜입니다. ARP는 LAN 상에서 호스트 간의 통신을 위해 필요한 MAC 주소를 얻는 데 사용됩니다.
HTTP (HyperText Transfer Protocol)
HTTP는 웹 브라우저와 웹 서버 간에 웹 페이지, 이미지, 비디오 등의 리소스를 주고받기 위해 사용되는 프로토콜입니다. 웹 브라우징, 웹 검색, 웹 애플리케이션 등에서 사용됩니다.
FTP (File Transfer Protocol)
FTP는 파일 전송을 위해 사용되는 프로토콜로, 클라이언트와 서버 간에 파일을 업로드하고 다운로드할 수 있습니다. 파일 공유, 원격 파일 액세스 등에 사용됩니다.
SMTP (Simple Mail Transfer Protocol)
SMTP는 전자 메일을 보내기 위해 사용되는 프로토콜로, 이메일 클라이언트가 이메일 서버로 이메일을 전송하는 데 사용됩니다.
Telnet
원격으로 다른 컴퓨터에 접속하여 명령어를 입력하고 제어하는 방식의 프로토콜입니다. Telnet을 사용하면 로컬 컴퓨터에서 마치 원격 컴퓨터에 직접 접속한 것처럼 명령어를 실행하고 파일을 전송할 수 있습니다. 주로 서버 관리나 원격 작업에 사용되며, 텍스트 기반의 인터페이스로 동작합니다. 그러나 보안적인 이유로 인해 암호화되지 않은 텍스트로 전송되기 때문에 보안에 취약하다는 단점도 있습니다.
SSH(Secure Shell)
네트워크에서 안전하게 원격 로그인하고 데이터를 암호화하여 전송하기 위한 프로토콜입니다. SSH는 보안성이 강화된 Telnet 대안으로 널리 사용되며, 인터넷을 통해 안전한 원격 접속을 제공합니다. SSH는 암호화 기술을 사용하여 데이터 전송을 보호하고, 인증 과정에서 사용자의 신원을 확인합니다. 이를 통해 외부에서 접속한 사용자도 안전하게 원격 서버에 접근하고 관리 작업을 수행할 수 있습니다. 또한, SSH는 포트 포워딩과 같은 추가 보안 기능도 제공하여 안전한 데이터 전송을 보장합니다. SSH는 주로 리눅스와 유닉스 기반 시스템에서 사용되지만, Windows 등 다양한 운영체제에서도 지원됩니다.
DNS (Domain Name System)
도메인 이름을 IP 주소로 변환하거나, IP 주소를 도메인 이름으로 변환하는 데 사용되는 프로토콜입니다.
그 외에도, POP3, IMAP, DHCP, SNMP 등 다양한 프로토콜이 존재합니다.