-
외워서 끝내는 네트워크 핵심이론 - 기초네트워크/외워서 끝내는 네트워크 핵심이론 2024. 4. 17. 19:37
수강에 앞서
1. bit, byte 등 정보 표현의 단위를 알고 있다.
2. 1byte는 8bit임을 알고 있다.
3. bit단위 논리연산을 할 수 있다.
4. 2진수를 16진수로 변환할 수 있다.
5. 1024MB가 1GB임을 알고 있다.
6. Process와 Program의 차이를 알고 있다.
7. OSI 7 layer라는 말을 알고 있다.
8. 범용 운영체제는 User mode와 Kernel mode가 존재한다는 것을 알고 있다.
9. Buffer의 의미를 알고 있다.
10. 개념(Abstraction) 과 구현(Implementation)의 차이를 안다.Layer와 Layered 구조
- 존립이 의존적이다.
· A가 존재하기 위해서는 B가 있어야 한다.
네트워크와 네트워킹 그리고 개념
Network Networking 관계 상호작용 User mode와 Kernel mode
S/W
(
Logical
[Virtual]
)User mode (app) - Socket : TCP/IP 추상화 시킨 인터페이스 파일
· 프로세스가 소켓을 열어준다.
- 프로세스 수준으로 설명이 된다.- Application (L7)
- L6
- Session(L5)Kernel mode (OS) TCP Transport ( L4 ) IP Network ( L3 ) Driver Data Link ( L2 )
+ Pysical ( L1 )H/W
(Physical)- NIC (Network Interface Card) Physical ( L1 )
Internet 기반 네트워크 입문
OSI 7 layer와 식별자
구분 DOD OSI 7 Layer ** 식별자 ** S/W
(Logical)Application L7 Application HTTP - L5 Session SSL(TLS) host to host L4 Transport TCP, UDP - Port 번호
· 인터페이스, 서비스, 프로세스 식별자Internet L3 Network Internet - IP 주소
· IPv4 : 32bit = 8bit * 4
· host를 식별H/W
(Physical)Network
AccessL2 Data Link Ethernet - MAC 주소
· 48bit 의 주소체계
· NIC를 식별하는 역할- $ipconfig -all
- 물리적 주소 : Mac 주소 (48비트)
Host는 이렇게 외우자
Host란? - Computer + Network
- End-point와 switch 로 이루어진다.Switch - Network 그 자체를 이루는 host (Infra)
- Ex) Router, IPS, Tab, AggregationEnd-point - Network 이용 주체
- Ex) Client, Server, Peer
· 단말기 역할에 대한 분류
· Peer는 내가 서비스 소비자이자 제공자이다.스위치가 하는 일과 비용
- Packet이 목적지로 이동하면서 Switch를 만나는데
· IP주소로 Switch 한다면 NetWork(L3) Switch라고 한다.
· 이런 L3 Switch를 Router라고 부른다.
· 만약 Mac 주소로 스위칭한다면 L2 Switch 라고 부른다.
비유 자동차 패킷 고속도로 인터넷 교차로 Router 이정표 Routing Table 교차로에서의 비용
(비용이 낮은 쪽으로 이동)Matrie 값
L2 수준에서 외울 것들
NIC, L2 Frame, LAN 카드 그리고 MAC 주소
NIC - NIC(Network Interface Card)는 흔히 LAN(Local Area Network) 카드이다.
- 유/무선 NIC이 있지만 굳이 구별하지 않고 NIC이라고 할 떄가 많다.
- NIC은 H/W이며 MAC주소를 갖는다.
- 하드웨어 하나당 여러 개의 인터페이스(NIC)을 가질 수 있다.Frame - L2수준에서의 데이터 단위 L2 스위치에 대해서
L2 Access switch - End-point( 랜선, PC )와 직접 연결되는 스위치
- MAC주소를 근거로 스위칭
- 케이블 연결 여부 용어
· Link-up : 연결이 잘되었다.
· Link-down : 물리적으로 케이블을 끊어버리거나 분리Uplink - 상위 계층(L3 ~ )으로 나아간다. L2 Distribution switch - 쉽게 생각하면 L2 Access 스위치를 위한 스위치
- VLAN(Virtual LAN) 기능을 제공하는 것이 일반적LAN과 WAN의 경계 그리고 Broadcast
Broadcast - Broadcast 범위를 생각해보자
· Broadcast는 효율이 안좋기에 최소화시켜야 한다.
- Broadcast 주소라는 매우 특별한 주소가 존재한다. (MAC, IP 모두 존재)
- 논리적인 것이지 아니면 물리적인 것인지로 구분하는 것도 방법이다.
- 일단 MAN(Metropolitan Area Network)은 제외하자.네트워크 책을 읽을 때의 TIP! - 책을 볼 때 H/W(물리적인 영역)와 LAN의 영역이 같다고 생각하면 편하다. ( 정답은 아니다! )
- Internet 부분(논리적인 영역)은 WAN의 영역으로 생각하자* CPU를 S/W로 구현한다면?! : Virtual Machine
L3 수준에서 외울 것들
IPv4 주소의 기본 구조
IPv4 - 32bit = 8bit * 4
- 2^8 = 256 가지 수 ( 0 ~ 255 )
- Network ID와 Host ID로 구성된다.
· Network ID는 동네 주소와 비슷한 개념이다.
· Host ID가 동네주소의 정확한 주소L3 IP Packet으로 외워라
L3 Packet - 단위 데이터
- Packet이라는 말은 L3 IP Packet으로 외워라
- Header와 Payload로 나뉘며 이는 상대적인 분류이다.
- 최대 크기는 MTU
· 1500bytes = 1.4KBWireShark - Network Analyer, Network Sniffer Encapsulation과 Decapsulation
L2 Frame Header
(L2)Payload #1
(L3 IP Packet)Header
(L3)Payload #2
(L4 TCP Segment)Header
(L4)Payload #3 패킷의 생성과 전달
Process 철수(송신자) & 영희(수신자) Packet 택배 Gateway 택배 기사 host 집 (IPv4를 보고 찾아옴) Port 번호 택배에 나와있는 이름 S/W User mode Process Socket - 파일의 일종
- Kernel mode Protocol을 추상화
· User mode Process에 접근할 수 있게Kernel mode TCP - Data 앞에 TCP 헤더를 붙여 Segment를 만든다. IP - TCP 헤더 앞에 IP 헤더를 붙인다. Driver - Frame(Ethernet) 헤더를 붙인다. H/W 계층별 데이터 단위
계층 데이터 단위 Socket Stream
· 시작은 있지만, 끝이라고 정하는 것은 정할 수 없다.
· 끝은 process 수준에서 정의하기 떄문에
· 데이터 단위보다는 데이터 덩어리에 가깝다.
- Segment와 Packet의 단위를 넘어가면 잘라서 분할한다.TCP Segment
· 단위 : MSS (1460bytes)
- 분할 : Stream을 Segment 단위를 자른다.IP Packet
· 단위 : MTU (1500bytes)L1 ~ L2 Frame [※중요] 이해하면 인생이 바뀌는 TCP/IP 송·수신구조
서론 - Process도 Buffer라는 저장 공간 존재
· send/receive (입출력)
- Socket은 File이다
· I/O(입출력)이 일어난다.
· attach된 Buffer 공간이 있는 법이다.송신
(Encapsulation)- HDD, SSD의 파일 정보(block)를 Process Buffer 공간으로이동 (읽어온다 - Copy)
· 파일을 Buffer에 한번에 올릴 수도 있고
· 쪼개서 올릴 수도 있다.
- Process Buffer 공간에서 Socket Buffer 공간으로 copy가 이뤄진다.
· Stream 형태의 데이터
- TCP/IP로 가면서 Socket Buffer 공간의 데이터가 분해
· Stream 형태의 데이터 → Segment(L4) → Packet(L3)
- L2에서 Frame이라는 데이터 단위 변경 후 목적지로 이동수신
(Decapsulation)- L2에서 Frame을 받아 Packet을 IP(L3)로 전달
- TCP/IP가 Socket으로 전달
· Packet → Segment → Socket I/O Buffer로 전달
- Process로 전달 ( receive )
· Socket I/O Buffer → Process Buffer
* 속도차
· Socket I/O Buffer은 채워 나가고
· Process Buffer는 비워 나간다.
* TCP는 패킷을 잘 받았다는 피드백(ACK + Socket Buffer의 여유공간의 크기)를 전달한다.
· 송신측은 대기 ( Wait for ACK )
· 송신측에서 ACK를 받으면 다시 데이터를 보낸다. ( 이 과정을 반복한다. )Network 장애 1. Loss (유실)
· 데이터 유실
· Network 문제
2. Re-transmission
· 데이터를 보내도 응답이 없을 경우에 다시 보냄
· ACK Duplicate
· Network 문제일 수도 있고 End-point 간의 합이 안 맞아서 문제 발생
3. Out of Order
· 데이터가 순서대로 오지 않을 경우
· Network 문제
4. Zero window
· Window Size : Socket I/O Buffer의 여유공간
· 네트워크 송수신 속도 > 프로세스의 데이터 처리 속도
· End-point(Application) 문제IP 헤더 방식
IPv4 형식 - 단위 : MTU
· 1500byte
- Header
· 20byte
- Payload
· 1480byteTotal length - 패킷 길이
· 2^16 : 64KB단편화 - 위 그림의 2번째 행과 관련되어 있다.
- 패킷을 짤라할 경우 사용TTL - 이 값이 0이 되면 패킷은 버려진다. Protocol - Payload안에 Header가 올 때 Header를 어떻게 해석을 해야하는지 나온다. Header checksum - 패킷이 송수신 과정에서 손상여부를 확인하기 위한 부분 (유효성 검사) * 16진수와 친해져야 한다. ( WireShark를 사용하기 위해! )
서브넷 마스크와 CIDR
서브넷 마스크 - 서브넷 마스크를 기준으로 Network ID와 Host ID를 잘라낸다.
- 주소에서 서브넷 마스크를 가지고 비트 단위로 AND 연산으로 Network ID가 나와 일치여부 확인
- 마스크연산 : AND연산으로 Host ID는 잘라냄
· Network ID가 같다면 '우리 네트워크로 오는 패킷'으로 판단클래스 - Network ID를 얼마만큼 자를 것인가?
- A class : Network ID(8bit) + Host ID(24bit)
- B class : Network ID(16bit) + Host ID(16bit)
- C class : Network ID(24bit) + Host ID(8bit)
- IP를 class 별로 잘라내기 위해 서브넷 마스크가 사용되었다.
- 컴퓨터가 좋아짐에 따라 클래스 개념을 쓰지 않는다.서브 매핑 - C class에서 Host ID를 짤라 Network ID로 연결시켜준다. CIDR
(Classless
Inter-Domain
Routing)- 클래스 개념 대신에 CIDR 방식을 사용
- /24 : 24비트를 Network ID라고 하겠다.Broadcast IP 주소
Broadcast IP - 호스트 주소를 다 1로 채운다면 방송 주소로 쓰인다.
- 하나의 지점을 정해서 가면 유니캐스트 이다.
- 브로드캐스트면 전체적으로 다 전달한다.
· 효율이 떨어진다.
· 브로드캐스트 도달 범위를 일정 수준에서 통제해야 한다.
· 브로드캐스트는 안할수록 좋다.다음 두 가지 주소는 고정이다. * Host IP : 192.168.0.0
* Broadcast IP : 192.168.0.255
- 실제로 쓸 수 있는 호스트 주소는 254개 뿐이다.
- 게이트 웨이 등 네트워크 장비를 빼면 PC가 실질적으로 사용할 수 있는 건 250개 정도가 된다.Host 자신을 가르키는 IP주소
127.0.0.1
(Loopback Address)- 호스트 자신을 가르키는 IP주소
- TCP/IP 계층 내에서 이동한다.
· 그 밑 계층으로 패킷이 내려가지 않는다.네트워크 접속 & 접근 - 하나의 프로세스로 작동한다.
- 인터넷을 사용하는 것은 컴퓨터가 아니고 정확히는 이 컴퓨터에서 실행 중인 어떤 프로세스가 인터넷을 사용한다.IPC
(Inter Process
Communication)- 소켓을 이용해서 내가 나한테 접속하는 방식으로 프로세스 간의 통신이 이뤄지도록 지원할 수 있다.
· 루프백 어드레스를 활용한다!TTL과 단편화
인터넷이란? - 라우터의 집합체라고 할 수 있는 논리 네트워크이다.
- 인터넷이라는 네트워크를 이루는 핵심적인 구성요소 : 라우터 + DNSTTL과 단편화 - Time To Live 는 패킷이 도착하지 못하였을 때 패기시키는 역할
- 단편화는 MTU크기 차이로 발생한다.
· MTU는 보통 1500byte 정도 한다.
· 가끔 MTU가 1400byte 이면 1500byte를 반으로 잘라서 전달해야한다.
· 단편화는 작은 패킷을 또 자르는 역할을 한다.
- 보통 단편의 조립은 수신측 Host(end-point)에서 이루어진다.MTU가
1400byte일때- 단편화는 좋은 현상이 아니다.
- 게다가 요즘은 MTU가 보통 1500byte정도이다.
그럼 언제 MTU가 떨어질까?
- IPSce VPN이 적용되어 터널링이 적용되면 MTU 사이즈가 줄어든다.
· 단편화 발생인터넷 설정 자동화를 위한 DHCP
인터넷 사용 전에
해야 할 설정L3의 환경 세팅
- IP주소
· ISP(Internet Service Provider) : IP주소 제공
- Subnet mask
- Gateway IP 주소
- DNS 주소
* 해당 설정들을 자동으로 사용하겠다 : DHCP를 활용하겠다!DHCP - DHCP(Dynamic Host Configuration Protocol) 체계는 주소를 할당하는 서버와 할당 받으려는 클라이언트로 구성된다.
· IT에서 Dynamic이라는 말은 런타임과 같다.
- 복잡한 인터넷 설정을 자동으로 해준다고 볼 수 있는데 핵심은 내가 사용할 IP주소를 서버가 알려준다는 것에 있다.
- DHCP Server는 Pool 가지고 있어 그 Pool 안에 IP Address들이 담겨있다.
- DHCP Server는 Boardcast 도메인에 묶여 있어야 한다.ARP
ARP
(Address Resolution
Protocol)- ARP는 IP주소로 MAC주소를 알아내려 할 때 활용된다.
- 보통의 경우 PC를 부팅하면 Gateway의 MAC주소를 찾아내기 위해 ARP Request가 발생하며 이에 대응하는 Reply로 MAC 주소를 알 수 있다.
- Broadcast로 ARP Req가 전송된다.
· 이에 대응하는 Reply 전송
- 네이버 같은 주소에 접속할 때 목적지 MAC Address는 Gateway MAC 주소가 잡힌다.
· 그럼 게이트 웨이는 IP패킷을 보고 움직인다.
- ARP도 캐싱된다.전체적인 정리 - 컴퓨터 전원 ON & IP 주소 자동 설정 시
1. DHCP 서버에서 IP주소, Subnet mask, Gateway IP 주소 설정
2. ARP Req를 보내서 Gateway MAC 주소 확인Ping과 RTT
Ping과 RTT - Ping 유틸리티(그냥 프로그램)는 특정 Host에 대한 RTT(Round Trip Time)을 측정할 목적으로 사용된다.
- ICMP 프로토콜을 이용한다.
- DoS(Denial of Service) 공격용으로 악용되기도 한다.
- RTT는 거리에 비례하는 것이 아니라 네트워크 속도가 중요하다.
L4 수준 대표주자 TCP와 UDP
TCP와 UDP 개요
TCP - TCP에만 연결(Connection, Session) 개념이 있다.
- 연결은 결과적으로 순서번호로 구현된다.
- 연결은 '상태(전이)' 개념을 동반한다.
- TCP는 배려남, UDP는 (배려가 없는) 나쁜 남자에 비유할 수 있다.TCP 연결 Client
- Process가 Sokcet을 Open
· PIP가 TCP Port 번호를 부여
Server
- 연결대기(Listen)
- Listen 상태의 소켓을 열어서 연결 대기
* 일반적으로 TCP의 Port 번호는 80번
* 상대방의 IP주소와 Port번호를 알아야지 연결이라는 개념을 시도할 수 있다.TCP 연결과정(3-way handshaking)
3-way handshaking - 통신 단위는 Segment, 단순 연결 목적(IP와 TCP로 이뤄져있다.)
- 정책 교환 : Seq 번호 교환, MSS(Maximum Segment Size)
- 연결이란 관리적 정보, 프로토콜이 규정하는 정보를 교환하는 것이다.TCP 연결종료 및 상태변화
4-way handshaking - 연결을 하자는 것도 끊는 것도 Client가 일반적이다.
- TIME_WAIT가 발생한다는 것은 연결을 끊자고 한 주체이다.
· 연결 끊기 최종완료 전에 발생한다.
- 서버가 연결을 끊도록 하는 것이 아니라, 클라이언트가 끊도록 유도해야한다.
· 그래야 서버 쪽에서 TIME_WAIT가 발생하지 않는다.
· 소켓은 제한된 갯수가 있는데 TIME_WAIT 시간동안 소켓이 낭비가 된다.TCP, UDP 헤더형식과 게임서버 특징
TCP Header 형식 보류 UDP Header 형식 보류 게임서버 - TCP의 경우 하향 평준화가 된다.
- UDP를 활용해서 TCP가 가지고 있는 혼잡제어를 직접 구현TCP '연결'이라는 착각
파일 다운로드 중 LAN 케이블을
분리했다가 다시 연결하면
TCP 연결은 어떻게 될까?- TCP 연결은 유지된다.
- 하트비트 : 소켓서버에서 TCP가 연결되어 있는지 계속 확인하는 과정TCP 연결이라는 착각 - 재전송 타이머의 기본 근사 값은 대략 3초다. 하지만 대부분의 운영체제들은 1초 미만이다.
- 재전송 타이머 만료 후에도 확인 응답을 받지 못한 경우 세그먼트를 재전송하고 RTO(Retransmission Time-Out) 값은 두 배로 증가한다.
- 예를 들어 1초 > 2초 > 4초 > 8초 > 16초 간격으로 재전송한다.
- 보통 최대 5회 재전송을 시도하고 5회 이상 모두 실패할 경우 보통 전송 오류가 발생한다.Buffer - 충격 완화 장치 TCP 연결과 게임버그
예시 - 어떤 MMORPG 게임에서 아이템 복제 버그가 발생하였다.
- 이는 논리적 TCP 연결과 물리적 링크간 차이를 이용한 시간차 공격이라 볼 수 있으며 연결이 사실은 End-point의 주관적 판단에 불과하다는 것을 보여준다.TCP의 연결은 보안성이 없다. - 보안성 = 기밀 + 무결 + 가용
웹을 이루는 핵심기술
한 번에 끝내는 DNS
DNS - 분산 구조형 데이터베이스
· 데이터베이스 시스템(DNS 네임서버)의 분산 구성
· 데이터의 영역별 구분(Domain Zone) 및 분산관리
· 도메인의 네임서버 및 도메인 데이터는 해당 관리주체에 의해 독립적으로 관리됨
- 트리(tree) 구조의 도메인 네임(Domain Name) 체계
· Damain : 영역, 영토를 의미
· 도메인 네임의 자율적 생성
· 생성된 도메인 네임은 언제나 유일(Unique)하도록 네임 체계 구성
- www.naver.com
· www : 호스트 네임
· naver.com : 도메인 네임
- DNS은 응답할 때 유효시간을 함께 응답한다.
· 유효기간 내에 요청 시 DNS Cache를 조회
- PC내 hosts를 조회해 이동
· hosts파일에 URL과 IP가 기록되어 있다.
- 공유기가 DNS forwarding을 통해 DNS 기능을 대행해주기도 한다.URL과 URI
URL과 URI - URL (Uniform Resource Locator)
- URI (Uniform Resource Identifier)
- 웹에서의 Resource란 결국 파일이다.
· HTML을 HTTP를 사용해서 이동시킨다.
· 이 파일의 저장된 위치를 Resource Locator라고 부른다.
- URI가 더 큰 개념이다.URI 구조 - URI = scheme ":" ["//" authority] path ["?" query] ["#" fragment]
- 더 간단화 : Protocol://Address:Portnumber/Path(or filename)?Parameter=value
· http://www.test.co.kr/course.do?cmd=search&search_keyword=Test굵고 짧게 살펴보는 HTTP
HTTP - HTTP는 HTML 문서를 전송받기 위해 만들어진 응용 프로그램 계층 통신 프로토콜이다.
- 기본적으로 클라이언트의 요청에 대응하는 응답형식으로 작동한다.
- 헤더는 다음과 같이 분류된다.
· 일반 헤더
· 요청 헤더
· 응답 헤더
· 엔티티 헤더
- 요청에 사용되는 메서드는 주로 GET, POST이다.HTTP 응답코드 - 200 OK
· 요청이 정상적으로 처리됨
- 201 Create
· 요청에 대한 새로운 자원을 생성하는데 성공함
- 301 Moved permanently
- 302 Found
- 400 Bad request
· HTTP 규약에 맞지 않는 요청
- 403 Forbidden
· 권한이 없거나 잘못된 파일 실행 접근시도
- 404 Not found
- 500 Internal server error
· 내부 오류떄문에 요청을 처리할 수 없음HTTP method - GET
· Download
- POST
· Upload
- HEAD
- TRACE
- PUT
- DELETE
- OPTIONS
- CONNECT그림 한 장으로 외워서 끝내는 웹 서비스 구조 기본 이론
웹 서비스 기본 구조 - HTTP는 TCP/IP 연결 후에 이뤄진다.
· Socket 수준에서 이루어진다. 즉, stream이 사용된다.
· stream데이터를 segment으로 나눠서 packet으로 만들어 전송WAS와 RESTful API 그리고 JVM
3-Tier - Web
- WAS
- DBAPM - Application Performance Management
- DB와 WAS 상태를 모니터링
· 응답시간 등등
- ex) ScouterJVM - Java Virtual Machine
- Java를 위해서 소프트웨어로 구현된 CPU보안 - IPS
· 1차 방어 체계
- SSL
- WAF(Web Application Firewall)
· 2차 방어 체계