IT는 Information Technology이다 

정보기술에는 전기통신, 방송, 컴퓨팅, 통신망 등이 속해있다

 

이번 장에서는 개발을 하기 전 필수로 알아야 하는 네트워크 기초 중 OSI 7계 층중 계발에 매우 자주 사용되는 2~4, 7 계층에 대해서 이야기를 나누어 보겠다 

 

소프트웨어에 관심이 있는 사람은 3계층 부터 보기 바란다.

1~2 계층은 소프트웨어 개발자가 작업할 영역이 없다시피 한다 

 

OSI 7 Layer 

출처 : 나무위키

위의 표는 매우 좋은 자료지만 처음 공부를 시작한다면 뭔가 할 것이다. 

 

 

1. 물리계층( Physical Layer)

UTP 케이블과 RJ45 커넥터

  • 위의 사진을 보면 처음 보는 것이라고 생각할 수 있다. 하지만 모든 PC에 인터넷을 하고 싶으면 연결하는 그 선이다
  • 1 계층은 전기적 특성을 이용해 신호를 전송하는 역할을 한다 
  • 전송을 주고받을 미디어 타입을 설명한다. - UTP(10BASE-T, 100BASE-TX .....)로 받을 거냐 HDMI로 받을거냐 등등~
  • 하드웨어 개발을 할 때는 해당 사항에 대해서 생각을 해야 하지만 그렇게 심각하게 고려할 필요는 없다 복잡하다
    (문제가 생기면 생각하는 편)
  • 주로 PC에서 사용되는 UTP(비차폐 꼬임 쌍선 : Unshielded Twisted Pair cable)의 이름은 말 그대로 차폐되지 않은 꼬인 두 가닥의 선을 의미한다 

출처 : 나무위키

  • 차폐선은 위와 같이 선 주변에 주로 금속으로 된 껍질로 감싸고 있다 

 

2. 데이터 링크 계층 ( Data link layer )

출처 : 나무위키

  • 위 사진처럼 우리가 많이 접한 저런 랜카드(NIC : Network Interface card)가 1,2 계층에 해당한다 
  • UTP 케이블을 연결할 때 어떻게 하는가 위에 RJ45에 해당하는 부분을 삽입한다. 
  • 그렇다 RJ45를 연결하는 부분은 1 계층이고 그 뒤에 딱 봐도 회로로 되어있는 것은 2 계층이다 
  • 여기부터가 인터넷의 시작인 이더넷이 있다 ( 이더넷 : 802.3, Wifi : 802.11 )
  • 각자 공유기를 살 때 제품 상세 설명을 보면 뒤에 802.11ac, 802.11b, 등이 쓰여있다 해당 규격이 와이파이의 규격을 이야기해준다 
  • 자신의 와이파이가 좋은 것인지 보고 싶으면 https://ko.wikipedia.org/wiki/IEEE_802.11 를 참고하기 바란다 
  • 2 계층에는 그 유명한 MAC( Media Access Control ) 주소가 있다. 해당 MAC 주소를 이용하여 주변에 있는 다른 기기와의 통신이 가능하다 MAC을 단순하게 아파트에 몇 호인지를 나타낸다고 생각해도 된다 
  • MAC은 총 48비트로 구성되어있고 이중 첫 24비트는 해당 제품을 만든 회사의 고유 번호이고 그 뒤는 해당 랜카드의 고유 번호이다. MAC 주소는 오직 하나만 존재한다 라고 말해야 하지만 같게 만들수도 있다

 

3. 네트워크 계층 ( Network Layer )

IPv4 의 2진수, 10진수 표기

  • 위의 사진은 IPv4의 경우이다 현재 보통의 PC에는 IPv4를 사용하고 있고 스마트폰의 경우 IPv6를 이용하고 있다 

IPv6의 16진수 표기 출처 : 나무위키

 

  • IPv6는 보통 16진수로 표현한다 IPv4와 같이 표기하기에는 너무 길어진다 무려 2의 128 제곱을 표현해야 한다 
  • 위를 보면 중간에 : 0000 :인 경우 생략하는 것을 볼 수 있다 너무 짧다고 당황하지 말자 
  • IPv6가 생긴 이유는 IPv4가 유한하기 때문이다 2의 32 제곱의 경우 대략 43억의 주소를 가질 수 있기 때문에 요즘같이 한 명당 3개 이상의 IP주소를 가지는 시대에는 IP주소는 부족해질 수밖에 없다 생각해 거의 무한에 가까운 IPv6를 만들었다 
  • 그런데 생각해보면 아직 IPv4를 이용하고 있는데 그게 가능한 이유는 여러 가지 IP를 대신하여 사용할 방법이 있기 때문이다 대표적으로 NAT( Network Address translation ) 이 있다 모두가 사용해봤다 안 해봤다면 거짓말이다 
  • NAT ( Network Address translation ) 
    - 웬만한 공유기(라우터)가 모두 사용하고 있다 
    - 대표적인 공유기로 예를 들겠다 IPtime의 공유기의 경우 192.168.0.1의 게이트웨이를 사용하며 DHCP(Dynamic Host Configuration Protocol )을 이용하여 내부 서브넷에게 192.168.0.0/24의 주소를 뿌려주게 된다 
    - 서브넷이라는 말이 나왔다 서브넷은 해당 IP에서 어디까지가 네트워크의 주소인지를 뜻한다  

    - 서브넷이 나온 이유는 IP의 문제점 때문이다. IP는 자신이 어디로 가야 할지 길을 찾기 위해 같은 네트워크의 모든 End point에게 자신이 찾고 있는 주소를 broadcasting 한다 하지만 만약 하나의 네트워크에 매우 매우 많은 Endpoint가 있다면 모든 endpoint로 Ack가 전송되어 서버에 과부하가 생길 수 있다. 그렇기 때문에 Subnet(Sub network)을 나누어 broadcasting의 범위를 제한하는 것이다. ( 여기까지가 내 네트워크니까 여기서 찾아 - 아파트에서 동을 생각하면 좋다 )
    - 그럼 여기서 너희 집도 192.168.0.1이고 내 집도 192.168.0.1이네?라고 생각이 될 수 있다 여기서 Public IP와 Private IP에 대해서 알게 된다 
    출처 : 나무위키
    - 위의 사진에 설명돼있듯이 IETF에서 정해놓은 규칙에 따라 해당 범위의 IP는 Private IP - 사설망이 되었다 
    - Private IP는 인터넷으로 나가지 못하고 차단된다 
    - 공유기에서는 들어온 공인 아이피를 사설 아이피로 바꾸고 다시 사설 아이피에서 공인 아이피로 바꾸는 작업을 진행한다 

 

4. 전송 계층 ( Transport Layer )

  • 전송계층은 protocol의 영역이고 TCP와 UDP가 대부분을 차지하고 인터넷에서 주로 사용되는 TCP에 대해서 짧게 설명하겠다 
  • TCP ( Transmission Control Protocol )
    - IP의 핵심 프로토콜 중 하나로 TCP/IP라고 많이 부른다 
    - 연결 지향형으로 3 way hand shaking을 통해 사용자를 인증한다 3 way hand shaking은 3번의 악수를 통해 서로 믿는다는 의미인데 해당 사항에 대해서 자세히 알고 싶다면 책을 보고 깊게 공부하는 것을 추천한다 
  • UDP ( User Datagram Protocol ) 
    - 위의 TCP와 반대되는 성격으로 비연결 지향형으로 연결이 되지 않아도 계속해서 패킷을 전송을 한다 

 

7. 응용 계층 ( Application Layer )

ssh

  • 개발자에게 아주 중요한 부분이고 Port에 대해서 설명하겠다
  • TCP와 UDP는 다음 자신의 목적지인 port 정보에 대해서 가지고 있다 
  • port는 Well-Known ports와 Registered ports, Dynamic Ports가 있다 
    - Well-Known ports ( 0 ~ 1023 )는 말 그대로 잘 알려진 포트이다 이미 사용하고 있을 확률이 높은 port로 다른 프로그램에서 해당 범위의 포트를 사용하는 것은 추천하지 않는다. 물론 다른 시스템이 사용하고 있다고 해서 못 사용하는 것은 아니다 단지 충돌이 일어날 수 있기 때문에 잘 사용하지 않고, default로 설정돼있더라도 보안의 문제 때문에 변경하여 사용하는 경우가 많다. 어떤 것이 있는지 자세히 보고 싶다면 https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers 를 참고하기 바란다
    - Registered ports ( 1024 ~ 49151 )는 위의 Well-Known ports와 같지만 대부분 잘 알려진 사용법이 없는 포트들이다. 대표적으로 3306 - MySQL, 3389- 원격 접속, 8080 - HTTP 등이 있다 
    - Dynamic ports ( 49152 ~  65535 ) 는 뭐로든 이용 가능한 포트이다. 딱히 대표적인 포트가 없다 사용하고 싶은 대로 사용해도 되지만 숫자가 길어 글쓴이의 경우 잘 사용하지 않는다. 

 

 

'IT기초' 카테고리의 다른 글

(3) Process, Thread, Multi-thread, Multi-process  (0) 2022.11.09
(2) CPU Instruction Cycle  (0) 2022.11.09
(1) Linux 기초 - 리눅스란?  (0) 2021.11.22

+ Recent posts