Backend-RoadMap_인터넷 개념 정리
2023. 3. 21. 20:17ㆍCS/Backend-RoadMap
728x90
인터넷?
- 컴퓨터들이 서로 통신 가능한 거대한 네트워크
네트워크
- 서로 연결된 컴퓨터 또는 기타 장치 그룹
기본 개념 및 용어
- 패킷 :
- 인터넷을 통해 전송되는 작은 데이터 단위
- 라우터 :
- 서로 다른 네트워크 간에 데이터 패킷을 전달하는 장치
- IP 주소:
- 네트워크의 각 장치에 할당된 고유 식별자
- 도메인 이름 :
- 웹사이트를 식별하는 데 사용되는 사라미이 읽을 수 있는 이름
- DNS :
- 도메인 이름을 IP 주소로 변환하는 역할
- HTTP :
- Hypertext Transfer Protocol
- client와 server 간에 데이터 전송하는데 사용되는 프로토콜
- HTTPS :
- client와 server 간의 보안 통신을 제공하는 데 사용되는 암호화된 버전의 HTTP
- SSL/TSL : Secure Sockets Layer 및 Transport Layer Securty 프로토콜은 인터넷을 통한 보안 통신을 제공하는데 사용
OSI 7 계층
- 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것
- 1계층 - 물리계층(Physical Layer)
- 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송
- 데이터 전달만 수행
- 데이터가 무엇인지, 에러가 있는지 상관 없음
- 장비 종류
- 통신 케이블, 허브 등
- 통신 단위 : 비트
- 0과 1로 표현
- 2계층 - 데이터 링크 계층(DataLink Layer)
- 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할
- 오류 찾기 및 재전송 기능 수행
- 포인트 투 포인트 간 신뢰성있는 전송을 보장하기 위한 계층
- CRC 기반 오류제어와 흐름 제어가 필요
- CRC: Cyclic Redundancy Check, 순환 중복 검사
- 네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지 확인하기 위한 체크값을 결정하는 방식
- CRC: Cyclic Redundancy Check, 순환 중복 검사
- 네트워크 위의 개체들 간 데이터를 전달하고, 물리 계층에서 발생할 수 있는 오류를 찾고, 수정하는데 필요한 기능적 절차적 수단 제공
- 직접 이어진 곳에만 연결 가능
- Mac주소를 가지고 통신
- 장비 종류
- 브리지, 스위치
- 전송 단위 : 프레임
- 브릿지나 스위치를 통해 맥주소를 가지고 물리 계층에서 받은 정보를 전달
- 3계층 - 네트워크 계층(Network Layer)
- 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅)
- 경로를 선택하고, 주소를 정하고 경로에 따라 패킷을 전달해주는 것이 역할
- 여러개의 노드를 거칠때마다 경로를 찾아주는 역할을 하는 계층
- 다양한 길이의 데이터를 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질을 제공하기 위한 기능적, 절차적 수단을 제공
- 라우팅, 흐름 제어, 세그먼테이션, 오류제어 등을 수행
- 라우팅 : 네트워크에서 경로를 선택하는 프로세스
- 흐름 제어: 송신 측과 수신 측의 버퍼 크기 차이로 인해 생기는 데이터 처리 속도 차이를 해결하기 위한 기법
- 세그먼테이션 : 패킷의 크기를 일정하게 만드는 것
- 오류제어: 전달 과정의 오류를 제어 하는 것
- 데이터를 연결하는 다른 네트워크를 통해 전달함으로 인터넷이 가능하게 만드는 계층
- 장비 종류:
- 라우터, Layer 3 스위치
- 전송 단위 : 패킷
- 4계층 - 전송계층(Transport Layer)
- 통신을 활성화 하기 위한 계층
- 데이터 수신시 4계층에서 데이터를 합쳐서 5계층으로 전달
- 양 끝단의 사용자들이 신뢰성 있는 데이터를 주고 받을수 있도록 하여 상위 계층에서 데이터 전달의 유효성이나 효율성을 생각하지 않도록 함
- 시퀀스 넘버 기반의 오류 제어방식 사용
- 특정 연결의 유효성 제어, 일부 프로토콜은 상태 개념 존재, 연결 기반
- 전송 계층이 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 다시 전송
- 기능
- 오류 검출 및 복구
- 흐름제어
- 중복검사
- 5계층 - 세션계층(Session Layer)
- 데이터가 통신하기 위한 논리적 연결
- 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법 제공
- 동시 송수신 방식, 반이중 방식, 전이중 방식의 통신과 함께 체크 포인팅과 유휴, 종료, 다시 시작 과정 등을 수행
- 기능
- 세션 설정, 유지, 종료, 전송 중단시 복구
- 6계층 - 표현계층(Presentation Layer)
- 데이터 표현이 상이한 응용 프로세스의 독립성을 제공하고 암호화
- 코드 간 번역을 담당
- 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 덜어준다
- MIME 인코딩이나 암호화 등의 동작이 이루어짐
- 데이터가 Text인지, GIP인지 등을 구분하는 역할 등을 수행
- 7계층 - 응용계층(Application Layer)
- HTTP, FTP, SMTP 등 프로토콜이 있음
- 해당 통신 패킷들은 프로토콜에 의해 모두 처리됨
- 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행
- 네트워크 소프트웨어 UI부분, 사용자 입출력 부분
OSI 7계층 데이터 흐름
- 1계층
- 2계층
- 3계층
- 4계층
- 5 ~ 7 계층
TCP/IP 4계층
- 1계층 - 네트워크 엑세스 계층(NetworkAccess Layer)
- OSI 7계층의 물리, 데이터링크 계층에 해당
- TCP/IP 패킷을 네트워크 매체로 전달
- 네트워크 매체에서 TCP/IP 패킷을 받음
- 에러 검출 기능, 패킷의 프레임화
- 네트워크 접근 방법, 프레임 포맷, 매체에 대해 독립적으로 동작하도록 설계
- 물리적 주소로 MAC 사용
- LAN, 패킷망 등에 사용
- 2계층 - 인터넷 계층(InternetLayer)
- OSI 7 계층의 네트워크 계층에 해당
- addressing, packaging, routing 기능 제공
- 네트워크상 최종 목적지까지 정확하게 연결되도록 연결성 제공
- 프로토콜 :
- IP, ARP, RARP
- 3계층 - 전송 계층(Transport Layer)
- OSI 7계층의 전송 계층에 해당
- IP와 PORT를 이용하여 프로세스와 통신
- 애플리케이션 계층의 세션과 데이터그램 통신 서비스 제공
- 통신 노드간의 연결 제어
- 신뢰성 있는 데이터 전송
- 프로토콜 :
- TCP, UDP
- 4계층 - 응용계층(Application Layer)
- OSI 7계층의 세션 계층, 표현 계층, 응용 계층에 해당
- 프로그램이 직접 상호작용하는 레이어
- 데이터를 처음으로 받는 곳
- 다른 계층의 서비스에 접근할 수 있게 하는 애플리케이션 제공
- 애플리케이션들이 데이터를 교환하기 위해 사용하는 프로토콜 정의
- 프로토콜
- HTTP, SMTP, FTP, SSH 등
- TCP/UDP 기반 응용 프로그램 구현시 사용
프로토콜
- 프로토콜 :
- 장치와 시스템 간에 정보가 교환되는 방식을 정의하는 일련의 규칙 및 표준
- 컴퓨터나 네트워크 장비가 서로 통신하기 위해 미리 정해놓은 약속, 규약
- 프로토콜의 요소
- 구문
- Syntax
- 데이터의 형식이나 신호
- 부호화 방법 등을 정의
- 의미
- Semantics
- 오류 제어, 동기 제어, 흐름 제어 등 각종 제어 절차에 관한 제어 정보를 정의
- 순서
- Timing
- 송/수신자 간 혹은 양단의 통신 시스템과 망 사이의 통신 시스템과 망 사이의 통신 속도나 순서등을 정의
- 구문
- 프로토콜의 기능
- 세분화(or 단편화)와 재합성
- 대용량 크기의 파일은 작은 단위로 나누어 보내고 수신측에서는 재조합 필요
- 캡슐화
- PDU는 SDU와 PCI로 구성
- 정보들을 붙이는 것이 캡슐화
- PDU:
- 프로토콜 데이터 단위
- 데이터가 전송될 때 일정 크기의 데이터 블록
- SDU
- 전송하려는 데이터
- PCI
- 제어정보 의미
- 주소, 오류 검출 코드, 프로토콜 제어 정보 등
- 연결제어
- 연결 지향형 데이터 전송
- 두 시스템이 서로 데이터를 교환할 때 연결을 설정하는 경우 연결 설정, 데이터 전송, 연결 해제 3단계로 구성
- ex) TCP
- 비연결 지향형 데이터 전송
- 연결을 설정하지 않는 경우
- 이렇게 전송되는 데이터를 데이터그램
- ex) UDP
- 연결 지향형 데이터 전송
- 오류 제어
- SDU나 PCI가 잘못되었을 경우 이를 발견하는 기법
- SDU : 전송하려는 데이터
- PCI : 제어정보
- 패리티 비트, 잉여도 검사를 통해 발견 가능
- 순서 검사나 일정시간 안에 패킷을 받지 못하면 재전송 요구 방식으로 이루어짐
- SDU나 PCI가 잘못되었을 경우 이를 발견하는 기법
- 흐름제어
- 송신측 개체로부터 오는 데이터의 양이나 속도를 조절하는 기능
- 기법:
- 정지-대기:
- 패킷에 대한 응답 후에 다음 패킷을 보냄
- 슬라이딩 윈도우:
- 가용 데이터 분량의 패킷을 한번에 보낸 후 응답 패킷을 받으면 다시 그만큼 데이터를 한번에 보내는 방식
- 정지-대기:
- 동기화
- 데이터를 전송할 때 각 객체는 타이머 값이나 윈도우 크기 등을 기억해야하는데, 이런 값을 공유하는 것
- 순서 설정
- PDU가 전송될 때 보내지는 순서를 명시하는 기능
- 연결 지향형에만 사용
- 순서 지정 이유는 흐름 제어, 오류 제어 등을 위해 사용
- PDU는 상대한테 보내면 상대는 순서에 맞게 데이터를 재구성하고 오류가 있는 경우 재전송 요청
- PDU : 프로토콜 데이터 단위
- 연결 지향형: ex)TCP
- 주소 설정
- 한 개체가 상대 개체에 데이터를 전송하려면 상대의 이름을 알아야함
- 프로토콜에는 각 전송 계층에 맞는 주소를 지정하는 기능이 있음
- 다중화
- 통신 선로 하나에서 여러 시스템이 동시에 통신할 수 있는 것
- 전송 서비스
- 우선순위 결정, 서비스 등급과 보안 요구 등을 제어하는 서비스
- 세분화(or 단편화)와 재합성
- 프로토콜 사용 이점
- 서로 다른 제조업체 및 공급업체의 장치와 시스템이 서로 원활하게 통신 할 수 있음
- 프로토콜의 종류
- IP
- 데이터 패킷을 올바른 대상으로 라우팅 하는 역할
- TCP 및 UDP
- 패킷이 안정적이고 효율적으로 전송되도록 하는 역할
- DNS
- 도메인 이름을 IP 주소로 변환하는 데 사용
- HTTP
- 클라이언트와 서버 간 데이터 전송하는 데 사용
- ARP, ICMP, SNMP, SMTP, POP, FTP, TFTP, DHCP 등의 프로토콜 존재
- IP
IP 주소 및 도메인 이름
- IP 주소:
- 네트워크의 각 장치에 할당된 고유 식별자
- 데이터를 올바른 대상으로 라우팅하여 정보가 의도한 수신자에게 전송되도록 하는 데 사용
- IPv4, IPv6
- ex) 192.168.1.1
- 도메인 이름:
- 웹 사이트 및 기타 인터넷 리소스를 식별하는데 사용되는 사람이 읽을 수 있는 이름
- 일반적으로 마침표로 구분된 두개 이상의 부분으로 구성
- ex) google.com
- DNS:
- 도메인 이름을 IP 주소로 변환하는 역할을 하는 인터넷 인프라의 중요한 부분
- 웹 브라우저에 도메인 이름 입력 → DNS 서버에 DNS 쿼리 송신 → 해당 IP 주소를 사용하여 웹 사이트 및 리소스에 연결
HTTP, HTTPS
- 인터넷 기반 서비스에서 가장 일반적으로 사용되는 프로토콜
- HTTP:
- Hypertext Transfer Protocol
- 클라이언트와 서버 간에 데이터를 전송하는 데 사용되는 프로토콜
- 웹사이트 방문 → 웹 브라우저가 서버에 HTTP 요청하여 웹 페이지 및 리소스 요청 → 서버는 요청된 데이터를 포함하는 HTTP 응답을 클라이언트로 전송
- HTTPS:
- HTTP Secure
- SSL/TLS(Secure Sockets Layer/Transport Layer Security) 암호화를 사용하여 클라이언트와 서버 간에 전송되는 데이터를 암호화 하는 보다 안전한 버전의 HTTP
- 추가 보안 계층을 제공하여 중요 정보 보호하는데 도움
TCP/IP
- 인터넷 기반 서비스에서 사용되는 기본 통신 프로토콜
- 서로 다른 장치에서 실행되는 응용 프로그램 간에 안정적이고 순서가 있으며 오류가 확인된 데이터 전달을 제공
- 주요 필요 개념:
- 포트:
- 장치에서 실행중인 서비스를 식별하는 데 사용
- 각 서비스에는 고유한 포트 번호가 할당되어 데이터를 올바른 대상으로 보낼 수 있음
- 소켓
- 통신을 위한 특정 끝점을 나타내는 IP주소와 포트 번호의 조합
- 장치간 연결을 설정하고 응용 프로그램 간에 데이터를 전송하는 데 사용
- 연결
- 두 장치가 서로 통신하려 할 때 두 소켓 사이에 연결이 설정됨
- 연결 설정 프로세스 중에 장치는 연결을 통해 데이터를 전송하는 방법을 결정하는 최대 세그먼트 크기 및 창 크기와 같은 다양한 매개 변수를 설정
- 데이터 전송
- 연결이 설정되면 각 장치에서 실행 중인 애플리케이션 간에 데이터를 전송할 수 있음
- 데이터는 일반적으로 세그먼트로 전송
- 각 세그먼트에는 시퀀스 번호와 기타 메타데이터가 포함되어 안정적인 전달 보장
- 포트:
SSL/TLS로 인터넷 통신 보안
- SSL/TLS :
- 인터넷을 통해 전송되는 데이터를 암호화하는 데 사용되는 프로토콜
- 웹 브라우저, 이메일 클라이언트 및 파일 전송 프로그램 등에 대한 보안 연결을 제공하는 데 사용
- 목적
- 사용자 데이터 보호
- 인터넷 통신을 통한 애플리케이션 통신의 무결성 및 기밀성 보장
- 필요 주요 개념
- 인증서
- 클라이언트와 서버 간의 신뢰를 설정하는 데 사용
- 서버 ID에 대한 정보가 포함
- 신뢰성을 확인하기 위해 신뢰할 수 있는 제 3자가 서명
- handshake
- 핸드셰이크 프로세스 중에 클라이언트와 서버는 보안 연결을 위한 암호화 알고리즘 및 기타 매개 변수를 협상하기 위해 정보를 교환
- 암호화
- 보안 연결이 설정되면 합의된 알고리즘을 사용하여 데이터를 암호화하고 클라이언트와 서버 간에 안전하게 전송가능
- 인증서
참고자료
https://cs.fyi/guide/how-does-internet-work
https://usefultoknow.tistory.com/entry/프로토콜Protocol이란-or-통신규약
https://shlee0882.tistory.com/110
'CS > Backend-RoadMap' 카테고리의 다른 글
Backend-RoadMap_Web Security Knowlege (0) | 2023.04.11 |
---|---|
Backend-RoadMap_APIs (0) | 2023.03.27 |
Backend-RoadMap_Scaling Databases (0) | 2023.03.23 |
Backend-RoadMap_About Database (0) | 2023.03.23 |
Backend_Roadmap_OS(+파일시스템) (0) | 2023.03.22 |