[Full-Stack Network] 2. OSI Architecture (L1-L3)

Cherish·2023년 9월 7일
0
post-thumbnail

  • Message : sw가 주고받는 정보
  • Sender : Message를 전달하는 device
  • Receiver : Message를 받는 device
  • Protocol : 약속

-> L2

  • Controlled-access : sw느낌
  • Channelization : hw
  • Random access : 가장 많이 쓰임



🍏 CSMA/CD

= 초고속 인터넷
ex) 이더넷

  • 유선에서 많이 쓰인다
  • 전자식 신호를 읽어서 여러명이 통신할 때(multiple access) 문제를 해결
  • 둘이 동시에 통신하는 것(이러면 충돌)을 detect하기 위해서 carrier를 지켜보고 있겠다.
  • 줄 하나를 계속 보면서 두명 이상이 동시에 데이터를 쏴서 통신 못하는 것을 감지
  • 충돌을 줄이겠다!

A가 C에게 쏜 신호가 도착하기 전에 C가 D에게 쏴버림 (통상적인 충돌 발생 이유)
-> collision detection -> C가 중단
누가 악의적으로 계속 신호를 쏘면 통신 불가 상태가 된다

요즘은 광케이블은 너무 빨라서 의미가 없다. 케이블도 싸져서 굳이 한줄에 두개 이상 컴퓨터를 연결하지 않게 되면서 충돌이 줄어들었다. CSMA/CD는 전통적인 개념일 뿐 사실 거의 안쓰임
HTTP3에서는 TCP대신 UDP를 http 밑에 넣는다. 물리적 충돌 확률이 굉장히 작아졌기 때문


  • K : 시도 횟수
  • 다 쏘기 전까지 문제가 생기면 다시 보내기
  • 다 쐈는데 error가 detect : jamming signal을 보냄. 이상한 신호를 쏴서 확실히 에러를 냄 / 재전송이 max가 된 경우 그만. 버림 / L1,L2의 기본 철학 : 안되면 버리자. 신뢰가 필요하면 위에서 보강을 해야 함.
  • 다 쏘고 error도 안남 : 끝



🍏 CSMA/CA

= 무선에서 많이 쓰인다

  • Collision Avoid
  • 무선일 경우 CD를 적용하기는 힘들다
  • RTS CTS를 보내서 에러를 최소화

  • 정보고 보내고 싶은 A : B에게 RTS 보냄. 나 보내고 싶어!
  • B가 통신 가능할 때 : CTS 사방에 보냄. 나 이제 A랑 통신할거임.
  • C,D : ㅇㅋ 입 다물게 -> 충돌 회피
  • ACK : 잘 받았어. 무선으로 뿜어냄. 다른 애들한테도 말해줌 -> C,D 다시 합류

✅ Hidden Station Problem (중요)

B가 보낸 걸 A는 받을 수 있지만 C는 X
C가 멀리 있거나 주파수가 간당하거나 이동할 경우 문제가 생길 수 있음

CTS,ACK 못들은 애가 관여하려고 하면 문제가 생김

무선 or 블루투스는 많은 사람이 쓸 수록 성능이 떨어지다가 0가 됨.

ex) 웹파 200명 강의실에서 웹서핑
-> How : 무선랜에서 무선 주파수를 만들어요
무선 주파수를 360도로 쪼갭니다. 안테나를 360도 쪼개서 바라보게 함
왼쪽 문쪽 : 왼쪽 바라보는 AP가~ 이런식으로 나눠서 담당
-> 많이 쪼개질수록 비쌈

무선랜 장비는 무차별 적으로 배포하면 AP 간 간섭을 일으켜서 성능을 반으로 떨궈요
유무선 공유기 가까이 두개 설치하면 하나끄세요. 바보
거리문제는 다른 방식으로 해결해야해요

네트워크의 근본 철학 : BEST EFFORT
=> 에러날 때 할때까지 해보고 안되면 포기


✅ QoS 저하

모든 통신은 유선이든 무선이든 손실이 발생한다. ex 날씨
사용자가 많으면 당연히 충돌 발생 -> 속도 저하 & 지연 발생

  • L1에서도 신호 불량 ex) 비,천둥,번개 등등
  • 이동통신에서도 발생 : 이동할때마다 속도가 변함
  • 무선랜이 많으면 블루투스가 느려진다

결론 : 서비스 보장을 위해서는 L1/L2에 대한 이해가 필요하다



🍏 L3 - [Network Layer]

시험에 낼 수도 있어여~

✅ Packetizing

위로부터 받은 PDU에 정보를 넣음(보내는 사람 IP Add, 목적지 IP Add -> 원칙적으로는 바뀌지 않고 상대에게 전달)

✅ Routing and Forwarding

  • 하나의 정보를 4개의 packet로 쪼개서 보닌다

example) 인터넷 - IP 사용

  • R1에 1번 packet이 도착하면 라우터가 목적지 주소를 확인해서 어느 줄로 보낼지 판단.
  • packet마다 결정.
  • packet마다 경로가 달라서 순서가 섞일 수 있다 = IP Network 특징
  • TCP : 순서를 맞춰준다 / UDP : 순서 무시-> 순서 맞춰야되는지 고려해서 TCP/UDP 결정

✅ Forwarding process

  • Forwarding table
    굉장히 빠른 RAM에 저장해서 빠른 처리를 해줘야 한다
  • Destination address
    내가 받은 message를 IP가 어디로 보내야할지 결정할 때 이전 정보를 참조하지 않고 오로지 지금 상황으로만 판단한다.

TCP

  • 에러검출 & 복구
  • Reordering(3계층에서 뒤섞인 순서를 다시 정렬)
    현재 KT, ST에서 메세지 순서가 바뀔 확률 0.000000000000001%

✅ IP Protocol

  • IP : 인터넷 기반 동작
    IP의 가장 중요한 기능 : 내 컴퓨터의 줄에 IP주소를 주는 것


✅ IPv4 Address

  • 32bit의 숫자 주소 / 10진수 4개
  • 특정 컴퓨터들 or 물리적 장치들의 IP주소를 식별할 수 있음.
  • Hexadecial : 프로그래밍할 때 사용 / 10진수 -> 16진수

✅ Hierarchy in addressing

32bit를 다시 둘로 나눈다

  • Prefix : 네트워크 주소
    ex) 경희대 127 = 127로 시작하면 전부 경희대
  • Suffix : 호스트 주소
    영역 내의 컴퓨터 -> 밖의 라우터들은 몰라도 됨. 안에서의 일은 내부에서 해결

✅ Slash notation (CIDR)

  • network 주소가 작을수록 관리할 수 있는 컴퓨터가 많아진다
  • example) 맨뒤 8 -> 24bit(32-8)를 가지고 컴퓨터를 관리

✅ Routing

  • 라우터 = 길을 결정

  • 인터넷에서 destination IP주소를 보고 Table과 비교를 통해 길을 찾는다


✅ IP Datagram format

Header = 20-60 byte

  • Time to live
    Sender가 처음으로 배포될 때 시간의 제약을 주는 것. 라우터를 00개 이상 통과하면 이건 잘못된거야~ Network layer가 이걸 조금씩 조절해줌.
  • Protocol
    TCP인지 뭔지 알려주는 것
  • Header checksum
    header에 에러가 있는지 확인

현재 모든 통신 프로토콜은 비트단위 계산


✅ IP Address

= 컴퓨터를 식별하는 주소

사실 장비를 식별하는 게 아님. 유선 줄이 꽂히는 장치를 컴퓨터라고 보통 생각하는데, 사실 서버 컴퓨터는 보통 선이 여러개 연결됨. 근데 IP주소는 줄마다 하나씩 할당되기 때문에, 엄밀히 말하면 컴퓨터를 식별하는 것은 아님. 근데 걍 컴퓨터라 생각하세요~ 서버쪽 갈 거 아니면.

Network 프로그램을 짤 때는 Virtual IP Address를 사용하는 경우도 있다.


✅ Domain Name

Domain Name = URL

  • IP Address를 1대1로 매핑

  • ex) khu.ac.kr은 코리아의 아카데믹의 경희대


✅ DNS

= Domain Name System
도메인 이름을 받으면 IP Address를 찾음

디도스는 해킹이에요? ㄴㄴ . 원래 행위를 못하도록 한 것
원래 통신에서 보안이라는 건 정상적 행위를 방해하는 것. 소프트웨어를 만들 때 발견하지 못한 버그들.


✅ DHCP

= Dynamic Host Configuration Protocol

Network Layer는 컴퓨터를 Host라 부른다.

  • 유선인 경우 줄에 IP 주소 할당
  • 무선인 경우 공유기가 Host에게 할당
    IP Address는 유무선 공유기에 접속할 때 마다 바뀐다.

✅ Network & Port Address Translation

  • Public IP
    인터넷에서 어디서나 접속할 수 잇는 고퀄 IP 주소

  • Private IP
    집 내부 컴퓨터들 끼리의 통신에 사용하는 IP 주소
    밖으로 나가면 의미가 X

    Public IP 주소는 한정되어있기 때문에 전세계 컴퓨터에 ipv4 주소를 줄 수 없다.
    IP주소가 부족해서 뻥튀기 하는 방법을 만듦 = Private + NAT/PAT

  • NAT / PAT
    = Private 과 Public을 왔다갔다할 때 쓰는 것
    Private 영역에서 인터넷에 접속하려고 하면 밖으로 내보내야 한다. 그 경우 destination IP Add는 건들지 않고 Source IP를 KT가 가지고 있는 Public IP Add로 바꿔준다. -> 100기가가 날아오면 실시간으로 모든 소스 아이디를 퍼블릭으로 바꿔야 한다.








0개의 댓글