본문 바로가기

개발/네트워크

네트워크 기초 1 - OSI 7 Layer / 소켓 / MAC주소, IP주소, Port번호

저는 전기전자공학을 1년 배우다 그만두고 학점은행제 컴퓨터공학 학사를 취득했습니다.

굳이 따지자면 비전공자는 아니지만, 전공지식을 제대로 학교에서 배운게 아니라 항상 지식에 대한 갈증이 있었어요.

 

그리고, 회사에서 기계설비의 DB에 있는 데이터를 MES서버로 가져와야 하는데 소켓 통신을 할 지, HTTP통신을 할지, 아니면 다른 방법이 좋을지, 제가 결정을 해야하는 상황이 발생했어요. 이때 소켓통신, 그리고 다른 TCP통신 등에 대해 지식이 모자라니 너무 답답하더라구요. 그리고 내부망에 서버를 설치하였는데 다른 사업장에서 이 망에 접근을 해야하는 상황. VPN을 사용하면 된다는데, 왜 되는것인지. 네트워크 지식이 부족한게 굉장히 답답하게 느껴졌습니다.

 

그래서 이참에 네트워크를 공부해보자! 하고 생각해서 널널한 개발자님의 "네트워크 기초 이론"을 듣기 시작했습니다. 이 글의 시리즈는 널널한 개발자님의 강의를 요약하고 더 공부한 내용을 추가한게 될 것 같습니다.

 

1. OSI 7 Layer 은 "개념"이다.

우선은, 개념에 집중하지 말고 실체(구현)를 배우자. TCP/IP와 HTTP는 구현이고 이것을 먼저 공부하는것이 좋다.

아래의 지식 정도만 머리에 넣고 가자.

 

1) 유저영역

  • L7 Application계층 => HTTP
  • L6
  • L5

2) 커널영역

  • L4, Transport 계층 => TCP, 식별자 PORT 번호
  • L3, Network 계층 => IP, 식별자 IP 주소

3) 하드웨어 영역

  • L2, => NIC, 식별자 MAC 주소
  • L1

 

2. 소켓은 무엇인가?

TPC/IP 소켓인 경우,

"TCP를 User Mode Application Process가 접근 가능하도록 파일형식으로 추상화한 인터페이스"

 

여기에서, "파일형식" 이라는 것이 잘 이해가 안되어 더 찾아보았다.

 

소켓의 파일형식이란?

✔ "파일형식"이라는 말은 소켓을 마치 파일처럼 읽고 쓸 수 있도록 추상화한 인터페이스를 의미해.
✔ 리눅스에서는 소켓이 실제로 파일 디스크립터로 취급되며, read(), write() 등을 사용할 수 있어.
✔ 윈도우에서는 직접 파일처럼 다루지는 않지만, 비슷한 개념으로 운영체제가 소켓을 핸들링해.

즉, 물리적인 파일 시스템(디렉토리, 파일)과 동일한 개념은 아니고, 운영체제가 제공하는 I/O 인터페이스 수준에서 "파일처럼" 사용할 수 있도록 설계된 개념이라고 보면 돼.

 

3.  MAC주소, IP주소, Port번호가 식별하는 것

1번에서 L4의 식별자는 Port 번호, L3의 식별자는 IP 주소, L2의 식별자는 MAC주소라고 했다.

그렇다면 이 번호들은 각각 무엇을 식별할까?

1) PORT 번호

  • S/W개발자: 프로세스 식별자
  • Network 관리자: 서비스 식별자
  • H/W 관리자: 인터페이스 식별자

-> 사람마다 다르게 이해하고 있다.

 

2) IP주소

  • HOST에 대한 식별자. (HOST: 인터넷에 연결된 컴퓨터)
  • 한 컴퓨터가 여러 IP 주소를 가질 수 있다.
    • 하나의 NIC에 여러 IP주소를 바인딩함

3) MAC주소

  • NIC(랜카드)에 대한 식별자
  • 변경 가능함.