강신규
[CS] 네트워크 본문
[네트워크]
둘 이상의 컴퓨터가 연결 되고 소통하는 것을 의미합니다.
[프로토콜]
네트워크 통신을 위한 규칙 , 약속 , 규약을 말합니다.
전 세계의 모르는 사람끼리 네트워크 통신을 하더라도 미리 정해진 규약이 있다면 그 규약에 맞춰 네트워크 통신을 편하게 할 수 있습니다.
[ OSI 7계층 ]

- 1 계층(물리 계층) -> 데이터를 전기 신호로 바꾸는 계층입니다.
- 2 계층(데이터링크 계층) -> 데이터의 물리적인 전송과 에러 검출, 흐름 제어를 담당하는 계층입니다.
- 3 계층(네트워크 계층) -> 패킷을 목적지까지 가장 빠른 길로 전송하기 위한 계층입니다.
- 4 계층(전송 계층) -> 최종 수신 프로세스로 데이터의 전송을 담당하는 계층입니다.
- 5 계층(세션 계층) -> 컴퓨터끼리 통신을 하기 위해 세션을 만드는 계층입니다.
- 6 계층(표현 계층) -> 데이터의 형식을 정의하는 계층입니다.
- 7 계층(응용 계층) -> 사용자와 직접 상호작용하는 응용 프로그램들이 포함된 계층입니다.
[ 물리 계층 ]
데이터를 전기 신호로 변환하는 계층으로 랜 카드 , 허브 등이 있습니다.

허브는 1:N 으로 여러대의 통신을 돕는 장치로 파형을 바로 잡아주고 데이터가 더 멀리 갈 수 있도록 전기 신호의 증폭을 돕습니다.
[ 데이터 링크 계층 ]
LAN에서 필요한 규격을 체크하는 계층입니다.
데이터의 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 계층입니다. 대표 장비로는 브리지 와 스위치 등이 있습니다.
이더넷 (Ethernet)
-> LAN에서 활용되는 네트워크 프로토콜 입니다. 이더넷은 물리 계층에서 신호와 배선, 데이터링크 계층에서 MAC 형식을 정의합니다.
CSMA/CD , CSMA/CA
-> 컴퓨터 여러 대가 동시에 데이터를 주고 받으면 데이터 들이 충돌 할 수도 있는데 이더넷은 CSMA/CD , CSMA/CA 방법을 통해 충돌을 막습니다.
**CSMA(Carrier Sense Multiple Access) 는 네트워크 데이터 전송 전에, 현재 채널 중이 사용중인지를 체크해서 멀티플 엑세스가 가능하도록 하는 프로토콜입니다.
CSMA/CD Detect -> 충돌 감지 기법 CD는 충돌이 발생할 경우 일정 시간 후 재전송 시킵니다.
CSMA/CA Avoidance -> 충돌 회비 기법 CA는 데이터를 전송하기 전에 전송의도를 알리는 신호를 보냅니다.
MAC 주소
-> MAC 주소는 랜 카드에 부여되는 고유한 주소 번호입니다. 전 세계에서 유일한 번호로 물리주소(WiFi 주소)라고도 불립니다. (ex 12:34:56:78:90:AB)
네트워크 장비 또는 컴퓨터는 모두 MAC 주소를 갖습니다.
통신을 위해서는 IP 주소(3계층 네트워크 계층)와 맥주소(2계층 데이터 계층) 둘다 필요합니다
[ 네트워크 계층 ]
WAN 에서의 네트워크 통신을 돕는 계층입니다. 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅) 입니다.
IP 란
IP(Internet Protocol) 란 인터넷에 연결되어 있는 모든 장치들(컴퓨터, 서버 장비, 스마트폰 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소입니다. -> 어떤 네트워크의 어떤 네트워크 장비인지를 구분할 수 있도록 하는 주소
LAN에서는 MAC주소 만으로 통신이 가능하지만 다른 네트워크끼리는 IP 주소와 MAC 주소가 필요합니다 -> 다른 네트워크를 식별 가능하도록 해주는 주소
IPv4 , IPv6
-> IPv4 는 32비트 주소비트 사용 , IPv6는 128비트 주소 비트를 사용합니다.
라우터
-> 네트워크 데이터를 전송할 때 어떤 경로로 전송할 것인지 길잡이 역할을 하는 장치입니다.
-> LAN 끼리 연결을 도와 WAN을 형성해주는 장치입니다.
정적 라우팅 , 동적 라우팅
정적 라우팅
-> 관리자에 의해 라우팅 테이블이 유지/관리 되는 기법입니다.
-> 라우팅 테이블(여러가지 경로 정보를 저장한 테이블)을 서로 교환하지 않기 때문에 대역폭을 효율적으로 쓸 수 있습니다.
-> 단점은 네트워크가 커질수록 유지보수가 어렵습니다.
동적 라우팅
-> 라우팅 프로토콜에 의해 자동으로 라우팅 테이블을 구성하는 기법입니다.
-> 동적 라우팅에 라우팅 프로토콜들이 쓰입니다.
ARP
-> Address Resolution Protocol = IP 주소를 MAC 주소로 변환해주는 프로토콜 입니다.
[ 전송 계층 ]
통신을 활성화 하기 위한 계층으로 보통 TCP 프로토콜을 사용하여 포트를 열어 응용프로그램들이 전송을 할 수 있게 합니다.
전송 계층의 특징 2가지
1) 신뢰성/정확성 -> 데이터를 목적지에 정확하게 전달 -> 연결형 통신
2) 효율성 -> 데이터를 목적지에 빠르게 전달 하는것 -> 비연결성 통신
TCP
연결성 통신 프로토콜을 말합니다 (신뢰성>효율성)
handshaking 과정을 통해서 신뢰성을 보장합니다.
UDP에 비하여 더 정확한 정보를 주지만 속도가 UDP에 비해 느립니다.
3 Way-Handshake
-> 3 Way-Handshake란 TCP 네트워크에서 통신을 장치가 서로 연결이 잘 되어있는지 확인하는 방법입니다. 송신자와 수신자는 총 3번에 걸쳐 데이터를 주고 받으며 통신이 가능한 상태임을 확인합니다.

1. 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보냅니다.
2. 서버는 클라이언트의 요청 패킷을 받고 요청을 수락한다는 ACK 과 SYN이 설정된 패킷을 발송합니다.
3. 클라이언트는 서버의 수락 응답 패킷을 받고 ACK 을 서버로 보냅니다. 이로서 연결이 성립됩니다.
UDP
비연결성 통신 프로토콜을 말합니다 (효율성 > 신뢰성)
수신 여부를 확인하지 않고 전송 순서를 보장하지 않습니다.
1대 다수 통신이 가능합니다. -> 실시간 성이 중요한 스트리밍에 사용
[ 세션 계층 ]
데이터가 통신하기 위한 논리적인 연결을 말합니다.
세션 설정, 유지, 종료, 전송 중단시 복구 등의 기능이 있습니다.
TCP/IP 세션을 만들고 없애는 책임을 집니다.
[ 표현 계층 ]
데이터 표현이 상이한 응용 프로세스의 독립성을 제공하고 암호화 합니다.
표현 계층은 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어줍니다. 예를 들면 해당 데이터가 TEXT 인지 , 그림인지 , GIF 인지 , JPG 인지의 구분 등이 표현 계층의 몫입니다.
[ 응용 계층 ]
TCP / IP 모델에서는 OSI 모델의 [ 응용계층 , 표현계층 , 세션계층 ] 을 합쳐서 응용 계층을 표현합니다.
응용계층은 어플리케이션 레벨에서 이해할 수 있도록 네트워크 데이터를 가공하는 계층입니다.
대표적인 프로토콜은 -> HTTP , DNS , FTP , SMTP , POP3 등 입니다
HTTP
HTTP 란 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜 입니다. HTTP는 어플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동합니다. HTTP는 상태를 가지고 있지 않는 Stateless 프로토콜이며 Method , Path , Version, Headers , Body 등으로 구성됩니다.

HTTPS
HTTP는 평문 데이터를 전송하는 프로토콜이기 때문에, HTTP로 비밀번호나 주민번호 등을 주고 받으면 제3자에 의해 조회될 수 있습니다. 이러한 문제를 해결하기 위해 HTTP에 암호화가 추가된 프로토콜이 HTTPS입니다. HTTPS에는 대칭키 암호화와 비대칭키 암호화가 모두 사용됩니다. 비대칭키 암/복호화는 비용이 매우 크기 때문에 클라이언트가 주고받는 모든 메세지를 비대칭키로 암호화하면 오버헤드가 발생할 수 있습니다. 그래서 서버와 클라이언트가 최초 1회로 서로 대칭키를 공유하기 위한 과정에서 비대칭키 암호화를 사용하고 , 이후에 메세지를 주고 받을 때에는 대칭키 암호화를 사용합니다.
1. 클라이언트가 서버에 최초 연결을 시도합니다.
2. 서버는 공개키를 넘겨줍니다.
3. 클라이언트는 인증서의 유효성을 검사하고 세션키를 발급합니다.
4. 클라이언트는 서버의 공개키로 세션키를 암호화하여 서버로 전송합니다.
5. 서버는 암호화된 세션키를 개인키로 복호화하여 세션키를 얻습니다.
6. 클라이언트와 서버는 동일한 세션키를 공유함으로 데이터를 전달할 때 세션키로 암호화/복호화를 진행합니다.

[ TCP 와 HTTP 의 차이 ]
HTTP는 비연결성 프로토콜인 반면에 TCP는 연결형 프로토콜 입니다.
HTTP는 단방향 통신만 가능한 반면 TCP는 양방향 통신이 가능합니다.
HTTP는 7계층인 응용 계층 프로토콜 , TCP는 4계층인 전송 계층 프로토콜입니다.
[ GET 과 POST 의 차이 ]
GET 방식은 데이터를 조회하기 위해 사용하는 방식으로 데이터를 헤더에 추가하여 전송하는 방식입니다. URL에 데이터가 노출되기 때문에 보안적으로 중요한 데이터를 포함하면 안됩니다.
POST는 데이터를 추가 또는 수정하기 위해 사용하는 방식으로 데이터를 바디에 추가하여 전송하는 방식입니다. URL에 데이터가 노출되지 않아 GET 방식보다 안전합니다.
참고)
https://mangkyu.tistory.com/91