일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 남궁성
- 네트워크
- 자바의 정석
- AWS CLF
- 다형성
- 개발바닥
- l3 스위치
- 프로토콜
- 인터페이스
- 인프콘
- java
- 자바
- 백준 1712
- 10866
- 계층화
- 유선LAN
- 논리구성도
- aws 자격증
- TCP/IP
- network
- modifiers
- 상속
- 백준 2775
- 물리구성도
- 테슬라폰
- 파이썬 1712
- 1764
- 역캡슐화
- 데이터 송수신
- 파이썬
- Today
- Total
병훈's Blog
네트워크 기초 본문
"OSI 7 Layer", "TCP/IP 프로토콜"을 HW와 SW관점에서 보자.
사용자층, 커널층, HW층으로 나눌 수 있다.
- 사용자층: 사용자와 상호작용하는 부분. 5~7 계층.
- 커널층: TCP/IP 관련 작업을 하는 부분. 3~4 계층.
- HW층: 물리적 연결 작업을 하는 부분. 1~2 계층.
Socket이란?
TCP를 User Mode Application Process가 접근할 수 있도록
커널을 파일 형식으로 추상화한 인터페이스가 소켓이다.
Port번호, IP주소, MAC주소는 무엇에 대한 식별자인가?
Port번호:
- SW개발자의 관점에서는 프로세스에 대한 식별자라고 답할 것이고
- 네트워크 종사자의 관점에서는 서비스에 대한 식별자라고 답할 것이고
- H/W 종사자의 관점에서는 인터페이스 번호라고 답할 것이다.
IP주소:
- Host에 대한 식별자 (Host: 인터넷에 연결된 컴퓨터)
- NIC 하나에 n개의 IP주소를 바인딩 할 수 있다.
- 하나의 컴퓨터에 IP주소가 여러 개 일 수 있다.
MAC주소:
- NIC(LAN카드)에 대한 식별자
- MAC주소는 HW에 박혀있지만, 변경할 수 있다.
Host, Switch, Network 이들의 관계에 대해...
Host는 인터넷에 연결된 컴퓨터라고 했다. Host가
- 인터넷을 이루는 컴퓨터라면 *Switch라고 부른다. (*Switch: Router, Firewall, IPS)
- 라우터는 인터넷 경로를 찾는 스위치다.
- Firewall, IPS는 보안적인 측면에서 스위칭하는 '보안 스위치'다.
- OSI 7 계층에서, 계층에 따라 스위치의 이름이 달라진다. 1계층이면 L1스위치, 7계층이면 L7스위치의 개념이다.
- 인터넷을 이용하는 주체라면 *End-Point라고 부른다. (*End-Point: Peer, Server, Client)
"인터넷이란 라우터와 DNS의 집합체다" 라고 이해하자.
TCP/IP에 슬래쉬 / 가 들어가는 이유는 계층이 다르기 때문이다.
IPv4주소 체계에 대한 암기사항
IPv4 = 32bit이고 IP의 경우의 수를 따지면 2^32 = 43억개이다.
그렇다면 어떻게 전세계의 사람들은 43억개의 IP만으로 인터넷을 사용하는 걸까?
(IPv6 = 128bit)
IP주소는 8bit씩 끊어서 표기한다. 192.168.60.14 처럼 생겼다. 그리고 서브넷 마스크라는 개념이 있다. 서브넷 마스크는 255.255.255.0 으로 적거나, 서브넷마스크가 차지하는 bit개수를 IP주소의 뒤에 /24 를 붙여 192.168.60.14/24 처럼 나타내기도 한다. 여기서 서브넷마스크가 차지하는 bit 개수는 네트워크 ID를 결정하는 기준이 된다.
43억 개라는 제한적인 IP주소를 전세계의 사람들이 사용하기 위해 ~~ 를 하는데, 이를 위해 IP를 네트워크 ID와 Host ID 두 부분으로 나눈다. 32bit 중 서브넷 마스크의 bit 수와 사용자의 IP 주소를 AND 연산한 값이 네트워크 ID가 된다. 예를 들어, IP가 192.168.60.14 이고, 서브넷 마스크가 255.255.255.0 일때 AND 연산을 하면 192.168.60.0 이 된다. 이것이 네트워크 ID다.
개발자 입장에서 Port번호 이해하기
포트번호는 개발자 입장에서 '프로세스 식별자' 라고 했었다.
각각 다른 프로세스에 대한 식별자이기 때문에 하나의 Host에서 동작하는 프로세스들 끼리 포트번호는 중복될 수 없다.
포트번호는 16bit다. 그렇기에 0~65535 사이로 정해진다.
근데, 0이랑 65535는 안쓰기에, 2^16 - 2 만큼의 포트번호를 사용한다.
Switch가 하는 일은 Switching 이다.
네트워크가 하는 일은 고속도로와 비슷하다.
이정표를 보고 목적지를 찾아가듯이 데이터도 목적지를 향해 나아간다.
여기서 '교차로 = 스위치(라우터)', '선택 = 스위칭' 이라고 볼 수 있다.
그런데, 목적지를 찾아갈 때, 돌아갈 수도 있고, 직진으로 갈 수도 있다. 당연히 직진으로 가는게 더 빠르다.
그렇다면 직진으로 더 빠르게 가기 위해서 네트워크에서는 어떤 방법을 사용해야 할까?
라우터끼리 통신하면서 목적지로 가기 위한 최적 경로를 결정한다.
이때 최적의 경로를 알려주는 이정표 역할을 하는 것이 라우팅 테이블이다. (별표 100개)
네트워크 데이터 단위 정리 (매우 중요!)
Socket이란?
TCP를 User Mode Application Process가 접근할 수 있도록
커널을 파일 형식으로 추상화한 인터페이스가 소켓이다.
라고 맨 처음에 말했었다. 이때 Stream이라는 데이터 단위를 같이 떠올려야 한다.
데이터는 소켓수준(user application) 수준에서는 Stream 데이터다.
Stream 데이터는 끝을 알 수 없는 일렬로 늘어진 데이터다.
이것을 네트워크로 보내기 위해서는 분해가 일어나는데, Stream을 자르는 것을 세그먼테이션이라고 한다.
그 잘린 조각 하나를 Segment라고 한다. 그리고 이 세그먼트를 인터넷에서 전송 가능한 형태로 포장한 것을 Packet이라고 부른다. (근데 이 패킷의 최대 크기(MTU)는 1500 Byte 밖에 안한다. 그렇기 때문에 Packet의 이전 단계인 Segment의 maximum size(MSS)도 이보다 작다.) 마지막으로, Packet을 실어 나를 때에는 Frame 데이터에 넣는다.
네트워크 인터페이스 선택 원리와 기준
위 그림처럼 유선 NIC와 무선 장치가 인터넷에 연결되어 있다면, 내 Chrome은 어떤 인터페이스로 인터넷과 연결될까?
인터넷에 연결된 장치가 여러개가 있더라도, 매트릭 값이 가장 낮고, IP가 일치하는게 많은 것과 통신하는 어떤 규칙대로 인터페이스를 정해 통신한다. 이 경로 테이블을 근거로 삼는다.
출처: 널널한 개발자 네트워크 강의
https://www.youtube.com/playlist?list=PLXvgR_grOs1BFH-TuqFsfHqbh-gpMbFoy
'Computer > Network' 카테고리의 다른 글
VLAN (ref. 후니의 쉽게 쓴 CISCO 네트워킹) (1) | 2023.11.23 |
---|---|
랜선 (LAN Cable) (1) | 2023.11.23 |
3 Tier Application Architecture (0) | 2023.10.27 |
네트워크 뿌수기 - 웹페이지를 만들고 꾸민다 (0) | 2023.04.18 |
네트워크 뿌수기 - 웹사이트는 어떻게 생겼을까? (0) | 2023.02.21 |