0. Network(망)
네트워크는 둘 이상의 개체들이 연결되어 서로 소통하거나 자원을 공유하는 시스템을 의미합니다.
철도나 버스 등을 활용한 교통 네트워크,
사람 간 관계를 활용한 소셜 네트워크,
전기 공급이 이루어지는 전력 네트워크 등 다양한 종류의 네트워크가 있습니다.
1. Computer Network
컴퓨터 네트워크는
두 대 이상의 컴퓨터가 데이터와 리소스를 전송하기 위해 유무선으로 연결되어 있는 것을 말합니다.
간단하게 말하면 두 대 이상 연결된 컴퓨팅 장치의 그룹이라고 할 수 있습니다.
네트워크 내의 모든 컴퓨터는 연결되어 있기 때문에,
컴퓨터 간 거리에 관계없이 정보를 교환할 수 있습니다.
2. 작동
정보 전송은 물리적(또는 무선) 기술과 통신 프로토콜이라고 하는 규칙 시스템을 통해 이루어집니다.
노드와 링크가 프로토콜을 따라 데이터를 송수신합니다.
전송은 링크{구리선, 광섬유, 무선 링크}를 통해 이루어 집니다.
한 번에 전송되는 비트가 많을수록 속도가 빠릅니다.
구리선은 전기 신호,
광섬유는 빛 신호,
무선 링크는 전자기파를 통해 데이터를 전송합니다.
3. 데이터 송수신
데이터는 송수신을 위해 여러 과정을 거칩니다.
3.1. 데이터 → 바이너리
사용자가 입력한 데이터는 HTTP 정보와 함께 암호화됩니다.
3.2. 바이너리 → 세그먼트(또는 데이터 그램)
데이터에 TCP(또는 UDP) 헤더를 추가하여 세그먼트(또는 데이터 그램)로 분할합니다.
TCP 헤더에는 포트번호, 데이터 순서, 확인 응답 번호, 체크섬 등이 포함됩니다.
UDP 헤더에는 포트번호, 길이, 체크섬 등이 포함됩니다.
TCP는 연결 지향적으로 데이터의 신뢰성이 높습니다.
UDP는 신뢰성이 낮지만 데이터를 빠르게 전송할 수 있습니다.
3.3. 세그먼트(또는 데이터그램) → 패킷
세그먼트(또는 데이터그램)에 IP 헤더를 추가하여 패킷으로 변환합니다.
IP헤더에는 출발지 및 목적지 IP 주소 등이 포함됩니다.
3.4. 패킷 → 프레임
패킷에 프레임 헤더, 트레일러를 추가하여 프레임으로 변환합니다.
프레임 헤더에는 출발지 및 목적지 MAC 주소, 프레임 유형, 데이터 길이, 우선순위 등이 포함됩니다.
프레임 트레일러는 프레임의 끝 부분에 위치하며 오류 검출을 위한 정보를 포함합니다.
3.5. 프레임 → 비트 → 링크
프레임은 비트 스트림으로 변환되고,
링크를 통해 전송됩니다.
3.6. 링크 → 데이터 → 노드
링크를 통해 데이터를 수신한 노드는, 데이터를 역순으로 처리합니다.
건축물을 이동시키는 것에 비유해보겠습니다.
건축물을 운송할 수 있는 단위로 분해하고,
여러 운송 수단을 통해 분해된 물질들을 목적지로 전달한뒤,
조립하는 과정을 통해 건축물을 이동시키는 것과 같다고 볼 수 있습니다.
4. HTTP 예시
4.0. L7 애플리케이션 계층
(프레젠테이션 계층과 함께 애플리케이션 계층으로 묶이기도 합니다)
사용자와 애플리케이션 간의 상호작용을 관리합니다.
HTTP, FTP, SMTP, DNS 등 여러 프로토콜을 포함합니다.
HTTP클라이언트가 다른 클라이언트에게 보낼 HTTP 데이터를 생성합니다.
그 데이터에는 GET, POST, header, host, body 등 HTTP 데이터가 추가됩니다.
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
데이터 형태: [HTTP 데이터 - GET, header body<클라이언트가 생성한 데이터>]
4.1. L6 프레젠테이션 계층
데이터의 표현 형식을 관리합니다.
데이터가 SSL/TLS를 통해 암호화됩니다, 필요에 따라 압축합니다.
데이터 형태: [암호화된 HTTP 데이터]
4.4. L4 전송계층
데이터의 전달을 관리합니다.
데이터를 세그먼트(TCP) 또는 데이터그램(UDP)으로 분할하고, 헤더를 추가합니다.
데이터 형태: [헤더 - 포트 등][페이로드 - 암호화된 HTTP 데이터 일부]
4.5. L3 네트워크 계층(인터넷 계층으로 표현되기도 합니다)
패킷의 전달을 관리합니다.
세그먼트(TCP) 또는 데이터그램(UDP)에 IP 헤더를 추가하여 패킷화합니다.
데이터 형태:[IP헤더- ip 주소 등][TCP또는 UDP 헤더][암호화된 HTTP 데이터 일부]
4.6. L2 데이터 링크 계층
(물리계층과 함께 네트워크 접근 계층으로 묶이기도 합니다)
프레임의 전달을 관리합니다.
패킷에 헤더와 트레일러를 추가하여 프레임을 생성합니다.
데이터 형태:[프레임 헤더 - MAC 주소 등][TCP또는UDP헤더][암호화된 HTTP 데이터 일부][프레임 트레일러 - 인증]
4.7. L1 물리 계층
데이터를 물리 매체를 통해 전송합니다.
프레임은 비트스트림으로 변환되고, 물리 매체를 통해 전송됩니다.
비트스트림은 빛, 전자기파, 전기신호로 표현될 수 있습니다.
[비트 스트림 - 01010110110]
4.8. 중간 네트워크 장치
데이터는 중간 네트워크 장치를 통해 전달됩니다.
중간네트워크 장치에는 스위치, 라우터, 허브가 포함됩니다.
4.9. 스위치와 라우터, 허브를 통한 데이터 전달
4.9.0 허브
허브는 수신한 데이터를 연결된 모든 장치로 브로드캐스트합니다.
허브는 데이터를 모든 포트로 전달합니다.
특정 포트로 데이터를 전달하는 기능이 없기에 트래픽을 증가시킬 수 있으며,
보안 측면에서 덜 안전합니다.
4.9.1 스위치의 MAC 주소 테이블 사용
스위치는 MAC 주소 테이블을 사용하여 프레임을 전달합니다.
스위치의 MAC 주소 테이블에 네트워크에 목적지 MAC 주소가 없으면 해당 프레임을 브로드캐스트합니다.
응답하는 MAC 장치가 있다면 MAC 주소 테이블을 갱신합니다.
응답하는 MAC 장치가 없으면, 스위치가 프레임을 라우터로 전달합니다.
4.9.2 라우터가 패킷을 처리
라우터는 프레임을 수신하고, 프레임 헤더와 트레일러를 제거하여 IP 패킷을 추출합니다.
라우터는 IP 패킷의 IP 헤더를 확인하고, 다음 홉의 MAC 주소를 결정하기 위해 ARP 요청을 브로드캐스트합니다.
목적지 IP 주소에 해당하는 MAC 주소를 찾으면,
라우터가 새로운 프레임을 생성하고, 생성한 프레임을 다음 홉 또는 최종 목적지로 전송합니다.
4.10. 네트워크 간 데이터 전송
4.10.1 다음 홉이 내부 네트워크에 있는 경우
라우터는 라우팅 테이블을 확인하여 ARP 요청을 통해 다음 홉의 MAC 주소를 알아내고,
프레임을 생성하여 전송합니다.
목적지에 도달할 때까지 반복됩니다.
4.10.2 다음 홉이 외부 네트워크에 있는 경우
라우터는 라우팅 테이블을 확인하여 다음 홉의 IP 주소가 외부 네트워크에 있음을 확인합니다.
(라우터가 기본 게이트웨이의 MAC 을 모를 경우, ARP 요청을 통해 알아냅니다)
라우터는 기본 게이트웨이 라우터를 통해 외부 네트워크로 패킷을 전송합니다.
4.10.3 외부 라우터
다음 라우터가 목적지를 찾을 때까지 라우팅 테이블에 패킷을 보냅니다.
4.11. 오류
목적지를 찾지 못하면 패킷을 폐기하고 출발지에 ICMP Destination Unreachable 메시지를 전송합니다.
4.12. 목적지
4.12.1 ARP 요청 후 MAC 주소에 전달
목적지의 IP 주소는 알고 있으나 MAC 주소를 모르는 경우,
출발지 IP, MAC 주소, 목적지 IP 주소를 포함한 ARP 패킷을 브로드 캐스트 합니다.
목적지 IP와 일치하는 장치가 A에 ARP 응답 패킷을 유니캐스트로 전송합니다.
이후 캐싱되어 ARP를 반복하지 않아도 됩니다.
4.12.2 MAC 주소에 전달
스위치가 해당하는 MAC주소를 지닌 인터페이스(물리적 포트, 목적지 장치)에 프레임을 전달합니다.
4.12.3 IP 주소에 전달
프레임의 IP 패킷을 추출하고 전송 계층(TCP/UDP)으로 전달합니다.
4.12.4 애플리케이션에 전달
세그먼트(TCP) 또는 데이터그램(UDP)의 소스 포트와 목적지 포트를 확인합니다.
논리적 포트 번호를 통해 데이터를 특정 애플리케이션에 매핑합니다.
TCP는 데이터 스트림을 재조립 후 전달하며, 손실된 세그먼트가 있으면 재전송 요청을 합니다.
5. DNS 요청 및 응답
5.0 L7 에서 DNS 클라이언트가 도메인 이름을 IP 주소로 변환하기 위해 DNS 쿼리를 생성합니다.
5.1 로컬 DNS 캐시에 해당 도메인에 대한 IP 주소가 있는 지, 캐시를 확인합니다.
5.2 DNS 쿼리는 설정된 DNS 서버에 전송됩니다.
5.3 DNS 서버는 요청받은 도메인 이름에 대한 IP 주소를 찾아 클라이언트에게 응답합니다.
5.4 응답받은 IP 주소를 사용하여 웹 서버에 접속합니다.
참고
https://aws.amazon.com/ko/what-is/computer-networking/
https://www.ibm.com/docs/ko/aix/7.2?topic=management-network-communication-concepts
https://www.cloudflare.com/ko-kr/learning/network-layer/how-does-the-internet-work/
'Dictionary' 카테고리의 다른 글
[Web, WS, WAS] 웹(Web) 기본 개념 (0) | 2024.08.31 |
---|---|
[Kafka] 개요; Message Broker & Kafka (0) | 2024.06.22 |
[GitHubFlow] 형상관리 전략 GitHubFlow (2) | 2024.01.16 |
Shebang #! (0) | 2024.01.11 |
Session vs Request Scopes (0) | 2024.01.06 |