네트워크

HwiJeongLee·2021년 5월 30일
0

네트워크

목록 보기
1/1

osi 7계층



전 - tcp udp
네 - ip

물리계층

비트 0,1을 컴퓨터가 이해할 수 있는 정보를 보낸다.

데이터 링크 계층

직접적인 연결
같은 네트워크 : 연결되어 있는 아이들, 서브넷마스크가 같다.
ARP 프로토콜에 있는 주소 : MAC 주소

내가 택배를 시켰어. (본사 : 서울)
(우리집 : 경기도)
근데, 여기서 바로 오지않고 곤지암, 용인 기흥 다 들렸다가 오니깐
이 곤지암, 용인 기흥 같은 중간 지점이 ARP 주소가 된다.

-> 실제로 네트워크연결에서 정보를 보낼때는 많은 네트워크를 연결연결하면서 가는 것
이 거처가는 경로를 확인하자? -> tracert를 치면 된다.

네트워크 계층

라우팅 :
ipv4 ipv6 라우팅 테이블에는 어느 주소가 여기에 있는지에대한 정보가 담겨있다.
그러면 이제 어디로 정보를 보내야할지 할 수 있는 것 이게 라우팅

라우팅 테이블은 계속 바뀌고 동적으로 관리된다. 효율적인 알고리즘에 의해 주기적으로 업데이트된다.

IP : 컴퓨터끼리 통신하는 프로토콜, 인터넷상의 통신규약

전송 계층

TCP - 신뢰성 , 상대적으로 느림 (1:1 과외) - 채팅

UDP - 비신뢰성, 빠름 (학교 수업) - 게임, 스트리밍

대부분 TCP를 사용한다. 속도가 빨라야하는 것만 UDP

포트 : 2바이트 크기의 숫자로 되어있고 TCP, UDP안에 들어있다.

세션 계층, 표현 계층, 응용계층 (한번에 응용 계층)

세션, 표현은 잘 몰라도 된다.
L7 : HTTP(TCP의 HTTP), FTP (TCP의 FTP), SSH(실제 프로그램에서 사용하는 포트)

wellknown protocol

1~1000 번의 알려져 있는 포트번호와 프로토콜 이름이 명시되어있는 프로토콜

패킷기반

L7의 데이터
GET/HTTP1
HOST : www.naver.com

L4의 데이터
포트 번호
80 TCP

L3의 데이터
IP주소
111.222.111.112

L2의 데이터
MAC주소가 들어간다.
같은 네트워크로의 위치. 다음에 가야할 곳,(택배에서의 곤지암 위치)

여기까지 SEND : 이때는 7->1로 정보를 하나하나 추가하면서 보내진다.

RECV : 받는 입장에선
패킷의 정보가 돌다가 여기서 내 택배가 보이면 해당 정보를 까본다.
내꺼가 아니면 안건드리고 패쓰
이번엔 L1->L7 순서로 근데 까보다가 내꺼가 아니였네? (IP주소가 달라)
이러면 L3에서 다시 원래 주인한테 보내지는 ARP의 주소를 바꿔서 (L2의 정보) 다시 포장해서 망에다가 풀어준다.

정처기 책에서 다시 계층별 메세지 전송 단위를 알면 좋다.
(L4 - 새그먼트, L3 - 패킷, L2 - 프레임, L1 - 비트)
새크먼트 헤더 데이터 트레일러??
패킷
프레임
비트 ... 이런식으로
자세한거는 정처기 책 다시 확인해보기.

공인 IP

IPV4 -> 32비트 8비트가 4개
UPGRADE
IPV6 -> 128비트 16비트가 8개

ISP가 IP를 준다.
대역별로 IP를 구매해서 사용한다.

그럼 서버 터졌다는게 ip를 다 소진했다는 건가..?? 맞는듯..

IPCONFIG.KR 에서 나오는 IP를 WHOIS.KR로 검색하면
누가 이 IP를 쏘고 있는지 확인할 수 있다.

사설 IP -> 다시 공부하기

앞에가 192 또는 172 또는 10으로 표현이 된다면 사설 IP

192.168 C클
172 B클
10 A클

사설IP 중 하나가 공인 IP를 가지고 있어야 인터넷을 사용할 수 있다.

즉, 공유기가 하나 있고 그게 공인 IP를 받는다면 인터넷을 사용할 수 있다.

사설 IP는 내가 몇호 인지
공인 IP는 내가 어떤 아파트 몇동인지

처음시작이 중요하다.

A->B
내가 네이버에 검색을 시도할 때, 네이버에 패킷을 보내면 네이버에서 나한테 정보를 다시 보낼 때는 NAT를 자동으로 만들어주기에 경로 걱정이 없어진다.

B->A
내가 게임방을 만들었는데 아무도 안들어와 이때 포트포워딩을 만들면
(포트포워딩 : NAT를 만들어 주는 것)
상대방이 내 공유기로 패킷을 보내면 그거를 이제 받을 수 있다.

서브넷마스크 (망에 대한 이야기) 중요

255.255.255.0 c클래스
255.255.0.0 B클래스
255.0.0.0 A클래스

C클래스에서
252대 컴퓨터가 보통 존재한다.
11111111.11111111.11111111.00000111
마지막 부분에 255대만 사용가능 근데 3개는 특수 기능이라서 252개의 컴터만 사용 가능하다.

앞에 서브넷마스크만 같으면 같은 컴퓨터라고 생각하면 된다.

근데 가끔 255.255.247.0 이런식으로 되어있다면 이 서브넷마스크는 무엇인가.

앞에서부터 1이 23개가 있다는 것
그러면 32-23해서 9개라면 9개의 비트를 가지고 0~2^9-1개의 컴퓨터가 같은 네트워크를 가질 수 있다.

서브넷마스크가 같으면 같은 네트워크가 되는 것이다.

멀티 프로세스

프로세스가 여러개
디스크에 있는 시스템 : 프로그램
메모리에 있는 시스템 : 프로세스

디스크와 메모리가 분리되어 있는 구조 : 폰노이만 구조

메모리가 주기억장치. 디스크가 보조기억장치
디스크는 비휘발성, 메모리는 휘발성

메모리에 있는 시스템들이 많을 때
ECHO 시스템이 여러개

프로세스의 메모리 구조
스택 영역
코드 영역
힙 영역
데이터 영역

멀티프로세스는 저런 메모리 구조가 독립적으로 되어있다. 컴퓨터에서 독립적으로 프로세스들을 관리한다.

PCB가 있는데 관리하는데 오래걸리고 코드영역 등의 데이터가 중복이 된다.

멀티 스레드

스레드란 하나의 실행 흐름
코드 힙 데이터는 공유를 하는데 스택은 따로 관리한다.

멀티 프로세스보다 훨씬 효율적이다.
하지만 관리를 잘못하면
동기화, 레이스컨디션이 생길 수 있다 (자원이 중복 사용되서 원치않는 결과가 출력되는 그런 오류)

스레드 풀
-> 스레드를 만들고 삭제하는게 비용이 많이 들기때문에 POOL에다가 내가 필요한 스레드를 다 만들어두고 QUEUE를 이용해서 관리하면서
스레드를 요청이 올 때마다 바로바로 사용가능하기때문에
요청에 좀 더 효율적으로 사용가능하다.

소켓 정보를 가지고 독립적인 FD 파일 디스크럽트를 갖고 있어야한다.

멀티 플랙싱

커널의 도움을 받아야한다.
멀티 플랙싱이란 커널에서 핸들러라는 개념으로 관리를 한다.
즉 하나의 WORK와 같은 개념입니다.

핸들러의 CALLBACK함수로 나한테 정보가 있으면 그냥 SEND를 보내면된다.

커널에 FD의 관리 틀이 있어서 그거를 가지고 정보를 처리를 하면 됩니다.

스레드를 좀 더 효율적으로 굴릴 수 있는 것이 멀티 플랙싱

-> 뭔지 모르겠다..... 다시 좀 더 찾아보기
( 핵심은 멀티 스레드보다 멀티 플렉싱이 더 효과적)

SELECT함수 -> 요즘은 리눅스의 EPOLL함수를 사용하면 된다.

profile
초보 개발자의 개발 공간

0개의 댓글