728x90
패킷 통신
패킷 교환 (Packet Switching) 방식은 미리 이동 경로를 정하지 않고, 데이터를 패킷 (Packet)이라는 작은 단위로 나누어 다중 노드로 구성된 네트워크를 통해 전송하는 개념이다.
- 전송될 데이터는 네트워크를 통해 전송되기 전에 패킷으로 쪼개지고, 각 패킷에는 고유 번호가 지정되어 네트워크를 거쳐 최종 수신지에 도착했을 때, 번호 순서로 결합되어 데이터로 완성된다.
- 각 패킷은 전송 당시 가장 효율적인 경로를 설정하여 최종 목적지까지 이동하게 된다.
- 회선 교환 방식과 다르게 상황에 따라 매번 다른 경로로 갈 수 있도록 하여 효율성을 강조
- 이게 가능하려면 출발지부터 목적지까지 가는 과정에서 거치는 모든 중간 노드들이 상황에 따라 이동 경로를 안내해야 한다.
- 즉, 패킷을 수신한 중간 노드가 패킷의 최종 목적지를(수신지) 확인하고, 목적지까지 가는 다양한 경로 중 그 상황에서 최적이라고 판단되는 경로를 따라 패킷을 이동시키는 라우팅을 해줘야 한다.
- 이러한 라우팅을 수행해주는 중간 노드가 라우터
- 데이터를 송신하는 호스트에서는 해당 네트워크가 사용하는 프로토콜을 기반으로 데이터를 작은 단위로 분할하고, 분할된 데이터들 각각의 앞에 패킷 번호, 송신지 및 수신지 정보 등 다양한 정보를 담은 패킷 헤더를 붙여 '패킷'이라는 형태로 변환하여 데이터를 전송하게 된다.
- 데이터들이 패킷이라는 단위로 변환되는 과정을 '캡슐화'라고 한다.
- 패킷 각각의 라우팅은 중간 노드들의 혼잡도, 역량에 따르기 때문에, 패킷이 순서대로 수신 호스트에 도착한다는 보장이 없다.
- 따라서, 수신 호스트에서는 송신 호스트가 전송한 패킷이 모두 도착했음을 인지했을 때, 해당 네트워크의 프로토콜에 의거하여 패킷 헤더를 읽고, 패킷들의 순서를 정리해서 원래 데이터 형태로 정립하게 된다.
- 이러한 패킷 전송 방식을 사용하게 되면, 중간 노드 각각에서 다른 노드로 이동할 때마다 최적의 경로를 통해 이동하기 때문에 전송 효율이 매우 높고, 노드들 간의 경로를 어느 한 패킷이 독점하는 것이 아닌 공유하는 형태이기 때문에 회선 교환 방식보다 효율적이다.
- 현재 거의 모든 통신이 패킷 전송 방식을 사용하고 있다.
- 현대의 정보통신 네트워크에서 데이터는 패킷으로 분할되어 라우터를 거쳐 전송되는 것이 기본 원리로 작용된다.
TCP/IP
TCP/IP는 컴퓨터 사이의 통신 표준 및 네트워크의 라우팅 및 상호연결에 대한 자세한 규칙을 지정하는 프로토콜 스위트이다.
- 인터넷에서 광범위하게 사용되며 이를 통해 학회, 대학, 정부, 기업에서 서로 통신할 수 있다.
- 네트워크에 연결된 여러 컴퓨터(호스트) 사이의 통신을 허용한다.
- 각 네트워크는 해당 네트워크의 호스트와 통신하는 다른 네트워크에 연결될 수 있다.
- 패킷 교환 및 스트림 전송으로 작동하는 많은 유형의 네트워크 기술이 있지만, TCP/IP는 하드웨어에 구애받지 않는다는 하나의 큰 장점이 있다.
- 인터넷 프로토콜이 전송 단위를 정의하고 해당 전송 방법을 지정하기 때문에, 정보를 연결하고 교환하는 많은 유형의 네트워크 기술을 허용하며, 네트워크 하드웨어의 세부사항들을 숨길 수 있다.
- 인터넷 주소는 네트워크의 모든 머신이 네트워크상의 다른 머신과 통신할 수 있도록 한다.
- 사용자가 필요로 하는 많은 통신 서비스에 대한 표준을 제공한다.
- 컴퓨터 시스템을, 네트워크에 접속하여 다른 인터넷 호스트와 통신할 수 있는 인터넷 호스트로 만드는 기능을 제공한다.
- 수행할 수 있는 명령과 기능
- 시스템 사이에서 파일 전송
- 원격 시스템에 로그인
- 원격 시스템에서 명령 실행
- 원격 시스템에 파일 인쇄
- 원격 사용자에 이메일 전송
- 원격 사용자와 대화식 통신
- 네트워크 관리
관련 용어
- 클라이언트: 네트워크 프로세스나 다른 컴퓨터의 데이터, 서비스 또는 자원들을 액세스 하는 컴퓨터 또는 프로세스
- 호스트: 인터넷 네트워크에 접속되고 다른 인터넷 호스트와 통신할 수 있는 컴퓨터
- 특정 사용자에 대한 로컬 호스트는 해당 사용자가 작업 중인 컴퓨터
- 원격 호스트는 네트워크에 있는 임의의 다른 호스트 이름
- 통신 네트워크에서 보면 호스트는 패킷의 소스이면서 대상
- 모든 호스트가 클라이언트, 서버 또는 둘 다 일 수 있다.
- 인터넷 네트워크에서 호스트는 인터넷 이름과 주소로 식별된다.
- 네트워크: 둘 이상의 호스트 및 이들 사이의 연결 링크 조합
- 물리적 네트워크는 네트워크를 구성하는 하드웨어이다.
- 논리적 네트워크는 전체 또는 일부의 하나 이상의 물리적 네트워크에 있는 추상적 구조이다.
- 인터넷 네트워크는 논리적 네트워크의 한 예
- 인터페이스 프로그램은 논리적 네트워크 작업을 물리적 네트워크 작업으로 변환시키는 일을 처리한다.
- 패킷: 호스트와 네트워크 사이의 한 트랜잭션에 대한 제어 정보 및 데이터 블록
- 패킷은 인터넷 네트워크를 통하여 데이터를 송수신하는 프로세스에 의해 사용되는 교환 미디어이다.
- 패킷은 소스에서 대상으로 전송된다.
- 포트: 프로세스에 대한 논리적 연결 지점
- 데이터는 포트(또는 소켓)을 통해 프로세스 사이에서 전송된다.
- 각 포트는 데이터 송수신을 위한 큐를 제공
- 인터페이스 프로그램 네트워크에서 각 포트는 사용 방법에 기초하여 인터넷 포트 번호를 가진다.
- 특정 포트는 인터넷 호스트 주소 및 포트 번호의 조합인 인터넷 소켓 주소로 식별된다.
- 프로세스: 실행 중인 프로그램
- 프로세스는 컴퓨터에서 활동 중인 요소
- 터미널, 파일, 기타 입출력 장치는 각기 다른 프로세스를 통해 통신
- 따라서 네트워크 통신은 프로세스 간 통신
- 프로토콜: 물리적 또는 논리적 레벨로 통신을 처리하는 규칙 세트
- 프로토콜은 다른 프로토콜을 사용하여 서비스를 제공하는 경우도 있다.
- 예를 들어, 연결 레벨 프로토콜은 전송 레벨 프로토콜을 사용하여 두 호스트 사이의 연결을 유지하는 패킷을 전송한다.
- 서버: 네트워크상의 다른 컴퓨터 또는 프로세스가 액세스 할 수 있는 데이터, 서비스 또는 자원을 제공하는 컴퓨터 또는 프로세스
TCP/IP 4계층
TCP/IP 프로토콜 계층
- 애플리케이션 프로그램은 메시지나 데이터 스트림을 인터넷 전송 계층 프로토콜인 UDP(User Datagram Protocol) 또는 TCP(Transmission Control Protocol) 중 하나로 전송한다.
- 해당 프로토콜은 애플리케이션으로부터 데이터를 수신하고 이를 Packet(패킷) 보다 작은 조각으로 나누어 대상 주소를 추가한 후 다음 프로토콜 계층인 인터넷 네트워크 계층을 따라 패킷을 패스한다.
- 인터넷 네트워크 계층은 패킷을 IP(Internet Protocol) 데이터그램에 포함한 후 데이터그램 헤더 및 트레일러에 넣고 데이터그램 전송 위치를 결정한 후 네트워크 인터페이스 계층으로 데이터그램을 패스한다.
- 네트워크 인터페이스 계층은 IP 데이터그램을 승인하고 이더넷이나 토큰 링 네트워크 같은 특정 네트워크 하드웨어를 통해 이들을 frame(프레임)으로 전송한다.
TCP(Transmission Control Protocol)
위 이미지는 TCP 기반의 프로토콜인 HTTPS의 'SSL handshake'를 도식화한 것이다.
파란색 상자는 TCP의 '3-way handshake'이고 노란색 상자는 HTTPS의 'SSL handshake'이다. HTTPS는 TCP 기반의 프로토콜이기 때문에 SSL handshake를 하기에 앞서 3-way handshake를 실시함을 알 수 있다.
TCP의 작동(3-way handshake)
TCP로 이루어지는 모든 통신은 반드시 3-way handshake를 통해 시작한다.
TCP는 TCP Header 내의 'SYN', 'SYN/ACK', 'ACK' Flag을 사용하여 통신을 시도한다.
- 송신자가 수신자에게 'SYN'을 날려 통신이 가능한지 확인한다.(이때 Port가 열려 있어야 한다.)
- 수신자가 송신자로부터 ‘SYN’을 받고 ‘SYN/ACK’을 송신자에게 날려 통신할 준비가 되어있음을 알린다.
- 송신자가 수신자의 ‘SYN/ACK’을 받고 ‘ACK’를 날려 전송을 시작함을 알린다.
이 밖에 주로 사용하는 Flag으로는 RST, FIN, FIN/ACK, PUSH 등이 있다.
TCP의 특징
- 흐름 제어: 송신자는 자신이 한 번에 얼마나 보낼 수 있는지, 수신자는 자신이 데이터를 어디까지 받았는지 끊임없이 확인하고 TCP Header 내의 Window size를 사용해 한번에 받고/보낼 수 있는 데이터의 양을 정한다.
- Window size는 수신자가 정하고 자신의 상황에 따라 Window size를 조절한다.
- window: 일정량의 데이터
- Acknowledgment Number: 자신이 지금까지 받은 데이터 양을 확인하여 송신자에게 보내는 숫
- Sequence Number: Acknowledgment Number의 순서 번호를 표기한 것
- 혼잡 제어: 데이터를 주고받는 양 단말(Endpoint)도 중요하지만 데이터가 지나가는 네트워크망의 혼잡 또한 중요하다.
- 혼잡 제어에는 많은 방식이 존재하는데 그중 Slow Start
- Slow Start : 송신자는 연결 초기에 데이터 송출량을 낮게 잡고 보내면서 수신자의 수신을 확인하며 데이터 송출량을 조금씩 늘린다. 이런 방식을 통해 현재 네트워크에서 가장 적합한 데이터 송출량을 확인할 수 있게 된다.
참고
주니어 개발자를 위한 TCP/IP 주요 프로토콜 알아보기 | 요즘IT
728x90
'Computer Science' 카테고리의 다른 글
Client Server 모델 (0) | 2024.08.16 |
---|---|
Echo Server (0) | 2024.08.15 |
SQL, Database (0) | 2024.08.12 |
HTTP (0) | 2024.08.12 |
VCS, Git (0) | 2024.08.12 |