반응형

네트워크 용어

  • 네트워크 : 컴퓨터끼리 정보를 주고 받을 수 있는 상태를 말한다.
  • 프로토콜 : 국가끼리 문제없이 교류할 수 있도록 정해진 규칙
  • TCP/IP : 네트워크 상 송수신을 원할하게 수행하기 위한 규칙으로 데이터 송수신에 관한 일련의 작업을 하나로 모은 것
  • 패킷 : 데이터 전송시 데이터를 일정 크기로 잘라서 보내는 방식으로, 보통 1 패킷 = 1024 비트이다.
  • cf) OSI 7 계층

TCP/IP 작동 방식

  1. [송신자 A] 애플리케이션 층 (HTTP, SMTP, POP3, FTP)
    • 애플리케이션간 데이터를 주고받기 위해 필요한 정보를 작성한다.
  2. [송신자 A] 트랜스포트 층 (TCP / UDP)
    • 데이터를 패킷으로 나누고 애플리케이션을 나타내는 번호와 데이터 조합하기 위한 정보를 작성한다.
  3. [송신자 A] 네트워크 층 ( IP )
    • 송수신할 컴퓨터 주소와 불명인 경우 데이터를 파기하는 표시 등을 작성한다.
  4. [송신자 A] 데이터링크 층 (Ethernet)
    • 네트워크 종류에 맞춘 형식으로 수신지 정보 등을 작성한다.
  5. [송신자 A] 물리 층
    • 비트열을 신호로 변환해 전송한다.
  6. [수신자 B] 물리 층
    • 신호를 비트열로 변환한다.
  7. [수신자 B] 데이터링크 층 (Ethernet)
    • 헤더에 적힌 정보를 확인하고 지정된 프로토콜에게 전달한다.
  8. [수신자 B] 네트워크 층 ( IP )
    • 헤더에 적힌 수신처가 맞는지 확인하고 지정된 프로토콜에게 전달한다.
  9. [수신자 B] 트랜스포트 층 (TCP / UDP)
    • 헤더를 확인하고 데이터를 순서대로 나열해 조합한다.
  10. [수신자 B] 애플리케이션 층 (HTTP, SMTP, POP3, FTP)
    • 조합된 데이터를 확인한다.

TCP/IP 4 계층 - 인터넷 모델

< 응용 계층 >

  • 컴퓨터끼리의 주고받기를 사용자가 이용할 수 있는 ‘통신 서비스’ 형태로 만드는 것(서버/클라이언트)
  • 애플리케이션 헤더 : 요청과 응답에 관한 정보가 들어있는 헤더
  • HTTP 프로토콜 : 하나의 요청에 하나의 응답을 반환하고 연결을 해제하는 방법
  • cf) HTTP 프로토콜과 Cookie/Session

< 전송 계층 >

< 인터넷 계층 >

  • 누가 누구에게 전달할 지를 결정하는 주요 역할, 적절한 루트를 사용해 전달하는 역할(Router)
  • IP 주소 : 인터넷 상의 컴퓨터들을 식별하기 위해 인터넷에 연결된 컴퓨터에 주어지는 숫자
  • IP 프로토콜 : 비커넥션형 프로토콜로 UDP와 동일하다. 신뢰성 있는 IP를 지원하기 위해 ICMP 프로토콜이 있다.
  • ICMP 프로토콜 : 수신인에게 전달되지 않는 등 문제 발생 시 송신자에게 그 사실을 알려주는 메세지를 전송한다.
  • IP 데이터그램 : 트랜스포트 층으로부터 데이터를 받아 IP 헤더를 붙인 것
  • Best Effort 방식 -> 노력은 하지만 결과는 보장하지 않는다.

< 네트워크 인터페이스 계층 >

  • 데이터 링크 안에서 데이터를 어떻게 주고받을지 결정하는 역할
  • NIC(Network Interface Card)을 통해 비트열 <-> 신호 변환
  • NIC에는 MAC 주소라는 고유 번호가 할당되어 있어 MAC 주소가 일치하는 경우에만 수신자 NIC에서 데이터를 받는다.
  • 수신인의 IP 주소만 알고 MAC 주소를 모르는 경우 ARP(Address Resolution Protocol) 프로토콜을 활용한다.
    1. MAC 주소를 알고싶은 컴퓨터의 IP 주소를 ARP 패킷에 적고 브로드캐스트 MAC 주소 앞으로 보낸다.
    2. 자신의 IP 주소가 아니라면 파기하고, 자신의 IP 주소라면 MAC 주소를 적은 ARP 패킷을 송신자에게 보낸다.

< CSMA 프로토콜 >

  • 동시에 네트워크를 사용하고자 할 때 상호충돌을 방지하고자 전송 Bus에 흐르는 신호를 감지하는 프로토콜
  • 노드 A에서 네트워크를 전송하기 전에 현재 채널을 사용 여부를 확인해 다중 접근을 방지하는 방법

< CSMA/CD >

  • 송신 전에 전송매체가 비어 있는지 확인하고(Carrier Sense), 비어 있으면 신호를 전송하고(Multiple Access), 전송 후에 충돌이 있는지 확인(Collision Detection) 하는 방식
  • 데이터 프레임 간의 충돌이 발생하는 것을 보완하기 위해 CSMA 방식에 충돌 검증 + 재전송 기능 추가
  • 모든 노드가 순서와 규칙 없이 경쟁하여 선로를 점유하는 방식으로 토큰 버스, 토큰 링은 각 노드에 차례로 점유할 기회를 주는 순차적 할당 방식
  • 전송량이 적을 때 효율적이고 버스형 LAN에 가장 일반적으로 이용
  1. 송신하기 전에 송신중인 다른 노드가 없는지 조사한다.
  2. MAC 주소 b 앞으로 데이터를 전송한다.
  3. 자기 앞으로 온 데이터일 경우 회수, 아닐 경우 파기한다.
  4. 충돌을 감지했을 때는 잠시 후 다시 전송한다.

<CSMA/CA >

  • CSMA 방식 기반에 RTS와 CTS를 사전에 주고 받음으로써 전송할 시간을 미리 예약하여 충돌을 미연에 방지하는 방식


반응형

'∙Network' 카테고리의 다른 글

[Network] TCP/UDP란?  (0) 2019.03.22
[Network] OSI 7 Layer란?  (0) 2019.03.22
[Network] HTTP와 REST API  (0) 2019.02.13
[Network] 주소창에 www.naver.com을 치면 일어나는 일  (0) 2018.12.13
반응형

* TCP((Transmission Control Protocol) 

- 인터넷 상에서 데이터를 패킷 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다. 

- TCP와 IP를 함께 사용하는데, TCP는 발신지에서 수신지로 패킷을 전송하기 위한 논리적 경로를 배정한다.

- 연결형 서비스로 가상 회선 방식을 제공한다. 

>> 연결 시 3-way Handshaking 사용, 해체 시 4-way Handshaking 사용

- 흐름제어(송신하는 곳에서 감당이 안되게 많은 데이터를 빠르게 보내 수신하는 곳에서 문제가 일어나는 것을 막는다.)

- 혼잡제어(네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것)

- 높은 신뢰성을 보장하지만 UDP보다 느린 속도를 가진다. ( 신뢰성 > 속도 )


* UDP(User Datagram Protocol)

- 데이터를 데이터그램 단위로 처리하는 프로토콜, 데이터그램이란 독립적인 관계를 지니는 패킷

- 비연결형 프로토콜로 연결을 위한 논리적인 경로가 없다. 즉, 각각 다른 경로로 패킷을 전송하여 빠른 속도를 보여준다.

- UDP Header의 CheckSum 필드를 통해 최소한의 오류만 검출한다.

- 흐름제어를 못하기 때문에 패킷이 재대로 전송 되었는지, 오류가 없는지 확인할 수 없다.

- 빠른 속도를 보여주지만 신뢰성이 없다. 스트리밍같은 서비스에 주로 사용된다.


반응형

'∙Network' 카테고리의 다른 글

[정보처리기사]TCP/IP  (0) 2020.06.30
[Network] OSI 7 Layer란?  (0) 2019.03.22
[Network] HTTP와 REST API  (0) 2019.02.13
[Network] 주소창에 www.naver.com을 치면 일어나는 일  (0) 2018.12.13
반응형

OSI 7 Layer이란?

- 개방형 시스템 상호연결(Open System Intercon-nection, OSI) 모델

- 상호 이질적인 네트워크간의 연결에 어려움이 많은데 이러한 호환성의 결여를 막기위해 ISO(국제 표준화 기구)에서는 OSI 참조모델을 제시함

- 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것

Why? 네트워크 통신 과정을 7단계로 나눈 이유는?

>> 계층을 나눈 이유는 통신이 일어나는 과정이 단계별로 파악할 수 있기 때문이다!

>> 문제가 발생하더라도 해당 계층만 고치면 된다


OSI 7 Layer 구조

1단계 : 물리 계층(Physical)

- 말 그대로 시스템의 물리적 표현을 나타낸다. (=물리적 장비)

2단계 : 데이터 링크 계층 (Data Link)

- 노드 간 데이터 전송을 제공하며 물리 계층의 오류 수정도 처리한다. 

- 주소 값은 물리적으로 할당 받는데, 이는 네트워크 카드가 만들어질 때부터 맥 주소(MAC address)가 정해져 있다는 뜻이다. ex) 이더넷

3단계 : 네트워크 계층(Network)

- 여러개의 노드를 거칠때마다 경로를 찾아주는 역할을 하는 계층

- 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅)

- 보스턴에 있는 컴퓨터가 캘리포니아에 있는 서버에 연결하려고 할 때 그 경로는 수백 만 가지다. 이 계층의 라우터가 이 작업을 효율적으로 처리한다. 

4단계 : 전송 계층(Transport)

- 양 끝단(End to end)의 사용자들이 신뢰성있는 데이터를 주고 받을 수 있도록 해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해준다.

- 전송 계층은 특정 연결의 유효성을 제어하고, 일부 프로토콜은 상태 개념이 있고(stateful), 연결 기반(connection oriented)이다. 대표적인 예로 TCP가 있다.

5단계 : 세션 계층(Session)

- 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다.

- TCP/IP 세션을 만들고 없애는 책임을 진다.

6단계 : 표현 계층(Presentation)

- 코드 간의 번역을 담당하여 사용자의 명령어를 완성 및 결과 표현한다. 

- 데이터를 안전하게 전송하기 위해 암호화/복호화 하는 역할 수행

7단계 : 응용 계층(Application)

- HTTP, FTP, SMTP, POP3, IMAP, Telnet 등과 같은 프로토콜이 있다.

- 사용자는 용도에 맞는 프로토콜을 선택하고 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다. ex) MS Office, Chrome ...


OSI 7 Layer 쉽게 외우는 방법

CIOKorea에 재미있는 방법이 있어 공유!

물리 계층에서 응용 계층까지(아래에서 위로)(P-D-N-T-S-P-A) 

소시지 피자를 버리지 말아 주세요(Please-Do-Not-Throw-Sausage-Pizza-Away) 


* 참고

https://github.com/WeareSoft/tech-interview/

https://shlee0882.tistory.com/110

http://www.ciokorea.com/news/36536



반응형

'∙Network' 카테고리의 다른 글

[정보처리기사]TCP/IP  (0) 2020.06.30
[Network] TCP/UDP란?  (0) 2019.03.22
[Network] HTTP와 REST API  (0) 2019.02.13
[Network] 주소창에 www.naver.com을 치면 일어나는 일  (0) 2018.12.13
반응형

* HTTP(HyperText Transfer Protocol)이란?

인터넷에서 데이터를 주고받을 수 있는 프로토콜로 웹 서버와 클라이언트간 통신하기 위한 규약


* HTTP의 특징

TCP/IP를 사용하는 응용 프로토콜이며 HTTP 메세지는 HTTP 서버와 HTTP 클라이언트가 해석한다.

HTTP는 연결 상태를 유지하지 않는 프로토콜이기 때문에 Request와 Response 방식으로 작동한다. 

크롬 개발자도구의 네트워크 탭의 정보를 해석해보자.

요청한 URL은 http://sophia2730.tistory.com 이며 200 코드로 성공적인 요청이였다는 결과를 받았다.

여기서 작동한 Method는 GET이며 POST, PUT(수정) 등의 메소드를 사용하여 클라이언트와 서버가 데이터를 주고받는다.

URI를 자원으로 보고 Method를 동사로 보는 개발 방식이 REST 방식이다.


* REST API란?

웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일로, 자원을 표현으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.

즉, URI를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

REST API는 두 가지 특징을 가진다.

  1. URI는 정보의 자원을 표현해야 한다.  ex) GET /members/delete/1 (X),  DELETE /members/1 (O)
  2. 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.

이러한 방식으로 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.


## Cache와 Session

공통점 : 서버가 사용자에게 빠르게 결과를 제공할 수 있음

Cookie 의 저장 위치는 내 컴퓨터 브라우저에 저장되므로 보안성이 떨어진다.

Session은 서버쪽에 저장되는 쿠키이며 클라이언트가 서버에 Request를 보내면 서버는 클라이언트한테 세션 ID를 제공한다.

반응형

'∙Network' 카테고리의 다른 글

[정보처리기사]TCP/IP  (0) 2020.06.30
[Network] TCP/UDP란?  (0) 2019.03.22
[Network] OSI 7 Layer란?  (0) 2019.03.22
[Network] 주소창에 www.naver.com을 치면 일어나는 일  (0) 2018.12.13
반응형

WEB 동작

주소창에 www.naver.com을 입력하면 어떤 일이 일어날까?

면접 질문에서도 종종 나오는 이 방식은 생각보다 간단하다.

방식에 대해 이해하기 전에 IP 주소, 도메인에 대한 사전 지식이 필요하다.


* IP 주소

IP 주소란 많은 컴퓨터들이 인터넷 상에서 서로를 인식하기 위해 지정받은 식별용 번호라고 생각하면 된다.

현재는 IPv4 버전(32비트)로 구성되어 있으며 한번씩은 들어봤을 법한 127.0.0.1 같은 주소를 말한다.

시간이 갈수록 IPv4 주소의 부족으로 IPv6가 생겼는데, 128비트로 구성되어있기 때문에 IP 주소가 부족하지 않다는 특징이 있다.


* 도메인 네임(Domain Name)

IP주소는 12자리의 숫자로 되어있기 때문에 사람이 외우기 힘들다는 단점이 있다.

그렇기 때문에 12자리의 IP 주소를 문자로 표현한 주소를 도메인 네임이라고 한다.

다시 말해서, 도메인 네임은 'naver.com'처럼 몇 개의 의미있는 문자들과 점(.)의 조합으로 구성된다.


도메인 네임은 사람의 편의성을 위해 만든 주소이므로 실제로는 컴퓨터가 이해할 수 있는 IP 주소로 변환하는 작업이 필요하다.

이때 사용할 수 있도록 미리 도메인 네임과 함께 해당하는 IP 주소값을 한 쌍으로 저장하고 있는 데이터베이스를 DNS(Domain Name System) 이라고 부른다.

다시 말해 사람이 메인 네임으로 입력하면 DNS를 이용해 컴퓨터는 IP 주소를 받아 찾아갈 수 있는 것이다.


* 작동 방식

  1. 사용자가 브라우저에 도메인 네임(www.naver.com)을 입력한다.
  2. 사용자가 입력한 URL 주소 중에서 도메인 네임(domain name) 부분을 DNS 서버에서 검색하고, DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달한다.
  3. 페이지 URL 정보와 전달받은 IP 주소는 HTTP 프로토콜을 사용하여 HTTP 요청 메시지를 생성하고, 이렇게 생성된 HTTP 요청 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 해당 IP 주소의 컴퓨터로 전송된다.
  4. 이렇게 도착한 HTTP 요청 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 URL 정보로 변환되어 웹 페이지 URL 정보에 해당하는 데이터를 검색한다.
  5. 검색된 웹 페이지 데이터는 또 다시 HTTP 프로토콜을 사용하여 HTTP 응답 메시지를 생성하고 TCP 프로토콜을 사용하여 인터넷을 거쳐 원래 컴퓨터로 전송된다.
  6. 도착한 HTTP 응답 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 데이터로 변환되어 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게 된다.


어려운 개념은 아니니 재미삼아 읽어봐도 좋을 것 같다.


출처 : http://tcpschool.com/webbasic/works

반응형

'∙Network' 카테고리의 다른 글

[정보처리기사]TCP/IP  (0) 2020.06.30
[Network] TCP/UDP란?  (0) 2019.03.22
[Network] OSI 7 Layer란?  (0) 2019.03.22
[Network] HTTP와 REST API  (0) 2019.02.13