네트워크

Network Layer 이번글에서는 IP protocol에 대해서 써볼까 합니다. 인터넷프로토콜(IP, Internet Protocol) 송신호스트와 수신 호스트가 패킷을 교환할 때 사용되며, 데이터 패킷을 목적지로 전달하는 역할을 수행합니다. IP protocol은 비연결성 프로토콜로, 데이터의 신뢰성을 보장하지 않습니다. 하지만 이러한 IP 프로토콜은 Transport 계층에 TCP, UDP와 함께 사용될 수 있어, 부족한 점을 보완할 수 있습니다. IP Datagram format 기본적으로 IP header는 패킷을 어디로 어떻게 보낼지에 대한 정보를 담고 있습니다. ver IP 프로토콜의 버전 정보 ex) IPv4, IPv6 헤더 길이 IP datagram 헤더의 길이를 나타낸다. 일반적으로 ..
이번 글은 Network Layer에 대해서 설명해 보겠습니다. 우선 Network Layer는 Transport Layer 아래에 위치합니다. Network layer의 핵심 기능 Forwarding data plane이 담당 패킷이 들어왔을 때, 보내주는 기능 Routing control plane이 담당. 들어온 패킷을 어디로 보낼지 판단하는 기능 판단하는 과정을 Routing table을 보고 판단함. 간단하게 두 기능을 여행에 비유해 설명해 보자면, forwarding은 여행을 하는데 고속도로를 통과하는 것처럼 그저 나아가는 작업입니다. routing은 여행에서 출발지에서 목적지까지의 경로를 계획하는 과정입니다. 자 그러면 이러한 기능들을 해주는 Data plane과 Control plane은 ..
Congestion이 무엇이냐? 사전적 의미는 혼잡, 과잉이라는 뜻을 가지고 있습니다. 네트워크에서 너무 많은 것들이 한정된 공간을 사용하려고 할 때 발생하는 상황을 가리킵니다. 네트워크에서 Congestion이 일어나면, 딜레이가 길어지고, 패킷이 유실되는 상황이 발생합니다. Congestion control과 flow control은 다른 개념입니다. Congestion control은 네트워크의 트래픽이 많아져 네트워크의 성능이 저하되는 혼잡 상태를 관리하는 기술이고, Flow control은 송신자와 수신자 간의 데이터 전송 속도를 조절하여 오버플로우를 방지하는 기술입니다. 각각은 다른 개념이지만 함께 사용되어 네트워크의 효율적인 데이터 전송을 가능하게 해 줍니다. Congestion의 원인과 비..
TCP는 신뢰성 있는 연결을 하는 프로토콜입니다. UDP랑 다르게 연결을 시작할 때도 복잡한 과정을 거칩니다. 연결을 시작하기전에, 송신/수신의 상태를 확인하는 과정이 필요합니다. 2-way handshake TCP 연결을 수립하는 방법 중 하나입니다. 클라이언트에서 연결을 하고싶다고 제안하면, 서버 측에서 승낙하는 방식입니다. 동작 방식 클라이언트가 서버에게 연결을 요청합니다. 이때 Headr의 SYN bit를 1로 설정하여 보냅니다. 서버가 연결이 가능할 경우, 클라언트에게 응답을 보냅니다. TCP header의 ACK,SYN bit를 1로 설정하여 보냅니다. 클라이언트가 서버로 부터 받은 ACK 패킷과, SYN 패킷을 확인하고, 데이터를 전송합니다. 설명의 편의를 위해서 왼쪽을 A, 오른쪽을 B라고..
TCP는 이제 설명하기 너무 입 아픕니다. 그저 간단하게 설명하자면 데이터의 신뢰성 있는 연결이 가능한 프로토콜입니다. TCP 프로토콜의 특징 point- to - point 하나의 sender는 하나의 receiver와 통신한다. Reliable, in-order byte system 데이터는 순서대로 applicaton layer로 넘겨지고, 데이터를 byte단위로 처리하기에, message의 맥락을 신경 쓰지 않는다. full duplex data 데이터 통신을 할 때 양방향으로 흐른다. cumulative ACKs 데이터의 신뢰성과 정확성을 확보, 안정적인 데이터 전송을 지원 pipelining TCP congetsion, flow cotrol이 window size를 결정함. connection..
RDT란? RDT(reliable data transfer)는 신뢰성 있는 데이터 전송을 위한 프로토콜입니다. 신뢰성이 있다는 뜻은 송/수신하는 데이터가 오류 없이 전송된다는 뜻입니다. RDT는 TCP가 UDP와 구분되는 가장 큰 특징입니다. RDT는 상위 계층에서 전송한 데이터가 손상되거나, 손실되지 않았다는 것을 보장한다는 뜻이고, 하위 계층에서 신뢰성을 보장할 수 없기에, 특정 계층에서 신뢰성을 보장한다면 그 상위 계층의 신뢰성은 모두 보장됩니다. Transport Layer에서는 신뢰성 있는 데이터 교환을 원하지만, 그 아래의 레이어에서는 신뢰성을 보장할 수 없기에, 신뢰성 있는 통신에 문제가 생길 수 있습니다. 이때 RDT 프로토콜을 이용하면 신뢰성을 확인할 수 있습니다. 그림을 보면 알 수 있..
UDP는 계속 설명했듯이 신뢰성 없는 통신보장이기에, 데이터 전송의 신속성이 더 중요한 경우에 사용됩니다. UDP는 다음과 같은 애플리케이션에서 사용됩니다. 멀티미디어 스트리밍 앱 DNS SNMP HTTP/3 애플리케이션 레이어에서 신뢰성과 congestion control을 추가했습니다. UDP segment header 우선 UDP 세그먼트는 UDP 프로토콜을 통해 전송되는 데이터의 작은 조각입니다. 이 조각은 Header와 Application data(payload)로 구성되어 있습니다. Header에는 다음과 같은 정보가 포함되어 있습니다. source port# 출발지 포트넘버로, 수신자는 데이터가 어떤 애플리케이션으로부터 온 것인지 식별할 수 있게 하는 정보입니다. dest port# 수신자..
Multiplexing과 Demultiplexing은 왜 필요할까요? 네트워크 통신에서 여러 개의 데이터를 효율적으로 처리하기 위해 필요합니다. 음 예를 들어서 설명해 보겠습니다. 예로는 편지 배달이 적절할 거 같습니다. 동구와 북구에는 작업반장이 한 명 있습니다. 각 작업반장은 각 구의 편지들을 모아서 우편배달부에게 전달해 주는 역할을 합니다. 여기서 작업반장이 하는 행동이 다중화입니다. 만약 이 다중화 작업이 없다면 작업반장은 각 구의 편지들을 하나 받고 전달하고, 이러한 작업을 하는데 굉장히 효율성이 떨어집니다. 만약이 우편배달부가 북구의 편지를 받아서 동구의 각 사람들에게 편지를 나눠줍니다, 이러한 작업을 역다중화입니다. 즉 쉽게 말하면, 다중화는 데이터를 보내기 전에 합치는 작업이고, 역다중화는..
Transport Layer Application Layer 바로 아래층에 위치한 계층입니다. 이름 그대로 데이터의 신뢰적인 전송을 담당하는 계층입니다. 송신자와 수신자 간의 통신을 제어하며, end-to-end 통신을 제공합니다. 역할은 다음과 같습니다. 출발지로부터 도착지까지 패킷이 제대로 전송될 수 있도록 합니다. Application Layer에서 만든 데이터를 일정한 크기로 자릅니다. Transport Layer Action Sender Application Layer로부터 메시지를 받음. 세그먼트 헤더 필드 값을 결정 세그먼트를 생성 IP를 통해 세그먼트를 전송 Receiver IP로 부터 세그먼트를 받음. 헤더 값을 체크 어플리케이션애플리케이션 메시지를 확인해서 오류를 검출하고 재조립하여 소..
재한
'네트워크' 태그의 글 목록