국비지원 공부 정리/네트워크 공통

TCP/IP 와 WebSoket

worldstroy 2025. 3. 29. 13:20

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