오늘도 기운차게 강의를 들어 보겠습니다!
OSI 7계층
클라이언트와 서버 🖥️
- 클라이언트 : 네트워크상에서 서버에게 서비스를 요청하는 장비
- 컴퓨터, 노트북, 핸드폰, 아이패드 등…
- 서버 : 네트워크상에서 서비스를 제공하는 장비
- 공유기, 도메인 관리기(DNS), IP 할당기(DHCP), 시간관리기(NTP), 게이트웨이 등…
- 서버 종류 및 서비스
- 공유기 : 네트워크에서 파일이나 프린터를 공유하게 해준다.
- 도메인 관리기(DNS) : 도메인 주소(naver.com)로 IP주소를 찾게 해준다.
- IP 할당기(DHCP) : 네트워크에 새로 접속한 장비에 IP주소와 네트워크 설정을 해준다.
- 시간관리기(NTP) : 네트워크상에 장비들의 시간을 알맞게 맞춰준다.
- 게이트웨이 : 여러대의 장비가 외부 네트워크에 접속하게 해준다.
OSI 7계층
네트워크에 규칙이 없던 시절에 엉망진창이던 것을 규칙을 새로 만들어주자 해서 만들어졌음
OSI 7계층 이전에 TCP/IP 프로토콜 5개 계층이 먼저 되어 먼저 적용이 되고 있었습니다.
💡 OSI 참조 모델 계층 대 계층 통신
계층 이름 설명7계층 | 👩💻응용 계층(Application) | 애플리케이션 서비스 제공 |
6계층 | 🗂️표현 계층(Presentation) | 문자코드, 압축, 암호화 |
5계층 | ⛳️세션 계층(Session) | 통신 방식 결정 |
4계층 | 🔐전송 계층(Transport) | 신뢰성 있는 통신 구현 |
3계층 | 🎯네트워크 계층(Network) | 다른 네트워크와 통신하기 위한 IP주소 결정 |
2계층 | ⛓️데이터링크 계층(Data Link) | 물리주소 결정 |
1계층 | 📡물리 계층(Physical Layer) | 물리적인 연결과 전기 신호 변환 |
- 계층간 인터페이스
- 자신의 바로 위 계층에 제공되는 정보와 서비스를 정의
- 계층기본구조
- 계층1,2,3(네트워크 지원계층)
- 하나의 장치에서 다른 장치로 전송되는 데이터의 물리적인 면을 처리
- 계층5,6,7(사용자 지원계층)
- 관계 없는 소프트웨어 시스템 간 상호 운용성 제공
- 제공4(전송계층)
- 네트워크 지원 계층과 사용자 지원 계층을 서로 연결**.** 네트워크 지원 계층이 전송한 것을 사용자 지원 계층이 사용할 수 있는 형태가 되도록 보장
- 계층1,2,3(네트워크 지원계층)

✋ 잠깐, 4계층을 퉁쳐서 1~4의 데이터 플로우 계층과 5~7의 애플리케이션 계층으로 나누기도 한다.
✋ IP vs MAC
- IP 주소
- 장치가 네트워크에 등록되는 시점에 할당받는 번호 = 이사가는 시점에 할당받는 집주소
- 192.168.0.2 = (대한민국).(경기도).(광명시).(철산로54번지)
- MAC 주소
- 장치가 생산될때 제조사에서 할당해주는 고유번호 = 내가 태어날때 할당받는 주민등록 번호
- ac:d0:74:78:42:07 = (91:08:07):(10:34:13)

- 내 장비의 IP 주소와 MAC 주소는 네트워크 설정에서 쉽게 알 수 있다

- 네트워크에 등록요청하면 네트워크 서버 장비들은 IP 주소를 장비들에게 할당해주고 이것을 MAC 주소와 매핑시켜 준다. 이 매핑정보를 통해 전송경로를 타고간다.
- 네트워크상에서는 IP 주소를 가지고 통신하는것 처럼 보이지만 실제로는 네트워크 장비들끼리 서로 MAC 주소를 알려주면서 연결된다.
- 도착지 IP주소를 찾을때까지 출발 MAC 주소와 도착지 MAC 주소를 계속 업데이트 시키면서 이동
- MAC주소는 L2스위치가, IP주소는 L3라우터가 알고있음

- 규칙 종류 = 프로토콜 종류
- TCP : 오류방지, 데이터 신뢰도가 높은 프로토콜
- UDP : 데이터 손실이 있더라도 데이터를 지속적으로 전송/비디오
- 📡 물리 계층
- 🚦규칙 : Hub, Repeater
- 🧩단위 : 비트 (Bit)
- ⛓️ 데이터 링크 계층
- 🚦규칙 : MAC 주소
- 🧩단위 : 프레임 (Frame)
- 🎯 네트워크 계층
- 🚦규칙 : IP
- 🧩단위 : 패킷 (Packet)
- 🔐 전송 계층
- 🚦규칙 : TCP, UDP
- 🧩단위 : 세그먼트(Segment)
- ⛳️ 세션 계층
- 🚦규칙 : OS
- 🧩단위 : 데이터(Data)
- 🗂️ 표현 계층
- 🚦규칙 : JPG, MPEG
- 🧩단위 : 데이터(Data)
- 👩💻 응용 계층
- 🚦규칙 :
- HTTP = 웹 접근 프로토콜
- FTP = 파일 전송 프로토콜
- Telnet = 통신 프로토콜 (단말 접속용)
- 🧩단위 : 데이터(Data)
- 🚦규칙 :
계층을 3단계로 나누면
네트워크 지원계층 = 1,2,3 계층
사용자 지원계층 = 5,6,7 계층
전송 계층 = 4 계층이 있습니다.
HTTP/HTTPS
IP 주소(Internet Protocol Address)
포트
DNS 도메인 네임 시스템(DNS, Domain Name System)
패킷
- 특징
- 데이터는 패킷으로 나뉘어서 보내집니다.
- 예를 들어, 사진 한 장을 보내도 여러 개의 패킷으로 나누어서 보냅니다. 수신하는 컴퓨터는 나눠서 온 패킷을 재결합해 원본 사진을 완성합니다. 즉, 패킷은 파편화된 데이터 블록입니다.
- 데이터는 패킷으로 나뉘어서 보내집니다.
-패킷 교환(Packet Switching) 방식의 등장
`미리 이동 경로를 정하지 않고, 데이터를 **패킷 (Packet) 이라는 작은 단위**로 나누어 **전송하는 방식`이다.** 전송될 데이터는 네트워크를 통해 전송되기 전에 **패킷으로 쪼개어지고**, 각 패킷에는 **고유 번호가 지정**되어 있어서 네트워크를 거쳐 최종 **수신지에 도착했을 때에 번호 순서대로 결합되어 원래 데이터로 완성된다**.
회선 통신과는 다르게, 각 `패킷은 **전송 당시 가장 효율적인 경로를 설정**하여 **최종 목적지까지 이동**`하게 된다.
TCP/IP
- IP
- 패킷들을 가장 효율적인 방법으로 최종 목적지로 전송하기 위해 필요한 프로토콜
- 패킷 전달 여부를 보장하지 않고, 순서 역시 보장하지 않는다.
- TCP
- 정의
- 패킷을 안전하게 전달해주는 전송 프로토콜
- IP위에서 동작하고 데이터의 전달을 보장하고 순서도 보장한다.
- 흐름제어
- 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법
- 혼잡제어
- 송신측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 기법
- TCP handshake
- 3-way handshake
- 클라리언트와 서버간에 전송 보장
- 클라리언트와 서버간에 전송 보장
- 4-way handshake
- 서버 - 클라이언트 연결 생성
- 클라이언트에서 요청할 DATA 전송
- 서버에서 전달 받았다고 ACK 전송
- 클라이언트가 연결 종료를 위해 FIN 전송
- 서버가 연결 종료하겠다고 ACK, FIN 전송
- 클라이언트도 종료했다고 ACK 전송
- 서버도 ACK 수신 후 최종적으로 종료
- 3-way handshake
- 정의
2. HTTP
Hypertext Transfer Protocol 의 약자
📌 **HTTP 요청과 응답**
- **요청 정보**

- **응답 정보**

- 특징
- 단방향성
- 서버가 먼저 응답을 보낼 수 없고 클라이언트가 요청을 보내야만 응답할 수 있다. (2버전 이전)
- 비연결성(connectionless)
- 클라이언트의 요청으로 서버와 연결된 후, 요청에 대한 응답의 데이터를 전송하면 연결을 종료한다.
- 따라서, 실시간 통신을 할 수 없다.
- 단방향성
- 문제점
- HTTP는 평문 통신이기 때문에 도청이 가능하다.
- 통신 상대가 검증된 상대인지 확인하지 않기 때문에 위장이 가능하다.
- 완전성을 증명할 수 없기 때문에 변조가 가능하다.
- 이러한 문제점을 해결하기 위해 HTTPS가 등장한다.
HTTPS
Hypertext Transfer Protocol Secure 의 약자
- HTTP 는 전송되는 요청/응답 정보가 기본적으로 암호화 되지않아서 보안정보 도난의 위험이 있음
- 이걸 해결하기 위해 **SSL(보안 소켓 계층)**을 사용
- SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버와 브라우저가 보안정보를 주고받을때 해당 정보가 도난당하는 것을 막아줌
- TLS: 전송 계층 보안(Transport Layer Security)
- TLS은 SSL의 향상된, 더욱 안전한 버전입니다.
- SSL이 더욱 일반적인 용어이기 때문에 DigiCert는 보안 인증서를 여전히 SSL로 언급하지만 DigiCert에서 SSL을 구입하면 가장 신뢰할 수 있는 최신 TLS 인증서를 얻을 수 있습니다.
- 웹사이트가 SSL/TLS 인증서로 보호되는 경우 HTTPS가 URL에 표시됩니다. 사용자는 브라우저 표시줄의 자물쇠 기호를 클릭해 발급 기관 및 웹사이트 소유자의 상호를 포함한 인증서의 세부 정보를 볼 수 있습니다.
📌 SSL?
- Secure Sockets Layer 의 약자
- Netscape 사에서 웹 서버와 웹 브라우저간의 보안을 위해 만든 프로토콜 (규칙)
- 대칭키와 비대칭키 기반으로 사용함
CA = 인증기관
공간 자원과 공간 복잡도
💁♂️ 프로그램 복잡도
- 프로그램 계산 복잡도는 다음 두 가지 척도로 표현될 수 있음
- 시간 복잡도: 얼마나 빠르게 실행되는지
- 공간 복잡도: 얼마나 많은 저장 공간이 필요한지
좋은 프로그램은 실행 시간도 짧고, 저장 공간도 적게 쓰는 프로그램 (=알고리즘)
- 통상 둘 다를 만족시키기는 어려움
- 시간과 공간은 반비례적 경향이 있음
- 최근 대용량 시스템이 보편화되면서, 공간 복잡도보다는 시간 복잡도가 우선
- 그래서! 알고리즘은 시간 복잡도가 중심
- 하지만, 공간 복잡도는 기본이기 때문에 기본이 안되서 떨어지는 경우도 많습니다!
- 총 필요 저장 공간
- 고정 공간 (알고리즘과 무관한 공간): 코드 저장 공간, 단순 변수 및 상수
- 가변 공간 (알고리즘 실행과 관련있는 공간): 실행 중 동적으로 필요한 공간
- S(P) = c + Sp(n)
- c: 고정 공간
- 𝑆𝑝(𝑛)Sp(n): 가변 공간
- 고정 공간은 상수이므로 공간 복잡도는 가변 공간에 좌우됩니다.
- 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당받습니다.
- 코드 영역(code area): 프로그래머가 작성한 프로그램이 저장되는 영역
- 여기에 전역변수가 코드로 저장됩니다.
- 데이터 영역(data area): 코드가 실행되면서 사용한 환경이나 파일들의 각종 데이터들이 모여있습니다.
- 스택 영역(stack area): 호출한 함수가 종료되면 되돌아올 메모리의 주소나 지역 변수 등이 저장됩니다.
- 여기에 메서드 내에서만 사용하는 지역변수가 메서드 실행단위로 저장되고 해제됩니다.
- 힙 영역(heap area): 동적으로 할당되는 데이터를 위해 존재합니다.
- 여기에 메서드에 참조형으로 전달할 참조형 변수들이 저장되고 해제됩니다.
- 코드 영역(code area): 프로그래머가 작성한 프로그램이 저장되는 영역
시간 자원과 시간 복잡도
'코딩 교육 TIL' 카테고리의 다른 글
2024-03-26 AI 코딩 TIL (3) | 2024.03.26 |
---|---|
2024-03-21 AI 코딩 TIL (0) | 2024.03.21 |
2024-03-19 AI 코딩 TIL (0) | 2024.03.19 |
2024-03-18 AI 코딩 TIL (3) | 2024.03.18 |
2024 -03-15 AI 코딩 TIL (4) | 2024.03.15 |