TCP (Transmission Control Protocol)
컴퓨터 네트워크에서 데이터 통신을 위한 프로토콜 하나로 데이터 교환을 가능하게 함 | |
TCP는 데이터를 신뢰성 있게 전송하기 위한 프로토콜 | |
특징 | 의미 |
신뢰성 | 데이터의 손실이나 손상을 최소화하고, 데이터의 순서를 보장 |
연결 지향 | 데이터를 주고받기 전에 송신자와 수신자 간에 연결 |
흐름 제어 | 데이터의 흐름을 제어하여 수신자가 처리할 수 있는 속도에 맞춰 데이터를 전송 |
혼잡 제어 | 네트워크의 혼잡 상태를 감지하고 조절하여 네트워크 성능을 유지 |
IP (Internet Protocol)
인터넷상에서 데이터를 주고받기 위한 통신 규약(약속) | |
특징 | 의미 |
패킷 기반 | 데이터를 작은 패킷 단위로 나누어 전송하고, 각 패킷은 목적지 주소와 출 발지 주소 정보를 포함 |
비연결성 | 패킷은 독립적으로 처리되며, 수신자와의 직접적인 연결이 필요하지 않음 |
라우팅 | 각 라우터가 패킷의 경로를 결정하여 목적지까지 전달 |
IP 주소 | IP는 각 컴퓨터를 식별하기 위한 IP 주소를 사용 |
TCP/IP 4계층
계층 명 | 성명 |
Network Interface Layer 또는 Network Access Layer 네트워크 계층 |
• OSI 7계층의 물리계층과 데이터 링크 계층에 해당 • 이 계층은 물리적인 네트워크와 상호 작용하며, 데이터를 전기 신호로 변환하거나 광 신호로 변환하여 전송 • 데이터를 프레임으로 나누어 전송하고 프레임을 수신하여 물리적인 신호로 변환하는 역할을 수행 • 수신된 프레임에서 오류를 검출 • MAC (Media Access Control) 주소를 관리 • Ethernet이나 Wi-Fi 같은 기술이 이 계층에 해당 |
Internet Layer 인터넷 계층 |
• OSI 7계층의 네트워크 계층에 해당 • 데이터 패킷의 라우팅과 논리적인 주소 지정을 담당 • IP (Internet Protocol) 프로토콜이 이 계층에서 작동하며, 패킷의 출발지와 목적지 IP 주소를 사용하여 라우팅을 수행 • IP 주소와 관련된 서비스인 ARP (Address Resolution Protocol)와 같은 프로토콜도 이 계층에서 동작 |
Transport Layer 전송 계층 |
• OSI 7계층의 전송 계층에 해당 • 이 계층은 데이터의 신뢰성과 흐름 제어를 관리 • TCP(Transmission Control Protocol)와 UDP (User Datagram Pro tocol)가 이 계층에서 작동 |
Application Layer 응용 계층 |
• OSI 7계층의 세션 계층, 표현 계층, 응용 계층에 해당 • 최종 사용자에게 서비스를 제공하기 위한 응용 프로그램과 사용자 인터페이스가 이 계층에 위치 • 이 계층은 다양한 프로토콜을 포함하며, HTTP, FTP, SMTP, POP3, IMAP, DNS 등의 프로토콜이 이 계층에서 동작 • 각 프로토콜은 특정한 응용 서비스를 제공하기 위한 목적으로 사용 |
UDP(User Datagram Protocol):
• UDP는 비연결성 프로토콜로, 데이터의 신뢰성은 낮지만 속도가 빠르고 간편 |
• 데이터그램 단위로 데이터를 전송하며, 순서 보장 및 데이터 신뢰성은 보장되 지 않음. |
• 데이터 전송에 관련된 작업이 단순 |
• 흐름 제어나 혼잡 제어 메커니즘이 없어서 오버헤드가 적음 |
• VOIP, 스트리밍, 온라인 게임 등에서 데이터 전송이 빈번하게 발생하는 경우 에 사용됩니다. |
소켓(Socket)
• 프로세스가 네트워크로 데이터를 내보내거나 데이터를 받기 위한 실제적인 창구역할을 하는 것 |
• 서버와 클라이언트를 연결해주는 도구로써 인터페이스 역할을 하는 것 |
• 서버 : 클라이언트 소켓의 연결 요청을 대기하고, 연결 요청이 오면 클라이언트 소켓을 생성해 통신을 가능하게 하는 것 |
• 클라이언트 : 실제로 데이터 송수신이 일어나는 곳 |
• 소켓은 프로토콜, IP 주소, 포트 넘버로 정의된다. |
• TCP와 UDP프로토콜을 사용하여 데이터를 전송 |
소켓 프로그래밍
이름 | 내용 |
• 서버(Server) | • socket() : Socket 생성 함수 • bind() : ip와 port 번호 설정 함수 • listen() : 클라이언트의 요청에 수신 대기열을 만드는 함수 • accept() : 클라이언트와의 연결을 기다리는 함수 |
• 클라이언트(client) | • socket() : 소켓을 여는 함수 • connect() : 통신할 서버의 설정된 ip와 port 번호에 통신을 시도하는 함수 • 통신 시도 시, 서버가 accept()함수를 이용해 클라이언트의 socket descriptor를 반환 • 이를 통해 클라이언트와 서버가 서로 read() write()를 반복 하며 통신 |
WebSocket과 HTTP의 차이
이름 | 내용 |
HTTP 통신 | • 클라이언트의 요청이 있을 때만 서버가 응답하여 해당 정보를 전송하고 곧바로 연결을 종료하는 방식 • 서버로부터 응답을 받은 후에는 연결이 바로 종료 • 실시간 연결이 아니고, 필요한 경우에만 서버로 요청을 보내는 상황에 유용 |
Socket 통신 | • 서버와 클라이언트가 특정 PORT를 통해 실시간으로 양방향 통신을 하는 방식 • 실시간으로 데이터를 주고 받는 상황이 필요한 경우에 사용 |
WebSocket이란?
양방향 소통을 위한 프로토콜(약속) |
• HTML5 웹 표준 기술 • 빠르게 작동하며 통신할 때 아주 적은 데이터를 이용 • 이벤트를 단순히 듣고, 보내는 것만 가능 • Handshake(핸드셰이크): 클라이언트가 서버로 웹소켓 연결을 요청할 때, 서버와 클라이언트 간에 초기 핸드셰이크가 이루어지며 이 핸드셰이크 과정을 통해 웹소켓 연결 • 클라이언트 측에서는 브라우저의 WebSocket객체를 사용하여 웹소켓 연결을 생성하 고 관리 |
WebSocket 이벤트 - 프론트엔드
open | 웹소켓 연결이 성공적으로 열렸을 때 발생 |
message | 웹소켓을 통해 데이터를 주고받을 때 발생 |
error | 웹소켓 연결 중 오류가 발생했을 때 발생. 연결 실패, 통신 오류 등이 해당 |
close | 웹소켓 연결이 종료되었을 때 발생 |
WebSocket 이벤트 - 프론트엔드
브라우저 환경에서는 WebSocketAPI를 사용하여 웹소켓 클라이언트를 만들 수 있지만, 서버를 만들려면 별도의 라이브러리나 모듈이 필요
1. WebSocket을 사용하기 위한 모듈을 설치한다. |
npm install ws |
2. 관련 설정을 한다. |
ws모듈 이벤트
connection | 클라이언트가 웹소켓 서버에 연결되었을 때 발생. 이 이벤트의 콜백 함수는 새로운 클라이언트 연결마다 실행 |
message | 클라이언트로부터 메시지를 받았을 때 발생 |
error | 웹소켓 연결 중 오류가 발생했을 때 발생 |
close | 클라이언트와의 연결이 종료되었을 때 발생 |
'국비지원 공부 정리 > 네트워크 공통' 카테고리의 다른 글
Socket.io의 기본적 사용법 (0) | 2025.03.29 |
---|---|
데이터 암호화란? (0) | 2025.03.29 |
서버구축 (0) | 2025.03.28 |
환경변수? (0) | 2025.03.28 |
Cookie, Session (0) | 2025.03.27 |