오늘부터 네트워크 기초 수업이 시작되었다.
네트워크 계층에 대해서 배웠다
OSI 7 계층과 TCP/IP 4 계층
7 계층 Application Layer
7 계층의 대표적인 프로토콜은 HTTP가 있다.
HTTP의 특징
- 무상태 (Stateless)
서버가 클라이언트의 상태를 보존하지 않는다.
따라서 클라이언트가 요청 시 항상 데이터를 전송해줘야 한다. 이러한 특징으로 서버 증설이 가능하다.
- 비연결성 (Connectionless)
요청, 응답이 끝나면 TCP/IP 연결을 끊는다.
이는 많은 자원들의 응답이 필요할 경우에 연결과 종료가 반복된다. (웹 브라우저 사이트 요청.. 등)
HTTP는 이 한계를 지속 연결을 통해 극복할 수 있다.
HTTP의 지속연결 : 연결 이후 모든 자원에 대한 응답을 받은 후 연결을 종료한다.
5 계층 Session Layer
7,6 계층을 통해서 받은 데이터들을 5 계층은 socket을 사용하여 전달한다.
socket은 클라이언트와 서버를 연결할 수 있게 만들어지는 연결부이다.
IP 주소에 포트를 붙이면 소켓을 명시하는 것.
4 계층 Transport Layer
4 계층의 대표적인 프로토콜은 TCP와 UDP이다.
- TCP
1. 3 way handshake
클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보낸다 (SYN 100)
서버는 SYN 요청을 받고 요청을 수락한다는 ACK와 SYN 패킷을 발송한다. (SYN 101, ACK 2000)
클라이언트가 서버에게 ACK를 보내면 연결 성립 (SYN 101, ACK 2000)
연결이 되면 응답을 돌려주기 때문에 IP 패킷의 비연결성 한계를 보완할 수 있다.
전송받은 패킷의 순서가 맞지 않는다면 TCP 세그먼트를 토대로 다시 패킷 전송을 요청할 수 있어 IP 패킷의 비신뢰성을 보완할 수 있다.
- UCP
TCP처럼 3 way handshake, 데이터 전달 보증, 순서 보장은 하지 않지만 단순하며 속도가 빠르다.
3 계층 Network Layer
3 계층에서는 IP와 IP Packet이 사용된다.
Packet은 데이터를 포장하여 출발 IP와 목적지 IP와 같은 정보를 포함하여 전달된다.
- 비연결성
패킷을 받을 대상이 없거나 불능 상태여도 패킷은 전송
- 비신뢰성
패킷이 사라질 수 있으며 패킷 단위로 전송될 경우 패킷의 순서를 보장할 수 없다,
위 한계는 TCP 세그먼트를 통해 보완될 수 있다.
2 계층 Data Link Layer
2 계층의 구성요소
- 네트워크 인터페이스 카드 (Network Interface Card, NIC)
- 스위치
1 계층 Physical Layer
1 계층에서는 물리적 장비를 통해 전기 신호를 전달한다.
장비 : 허브, 케이블, 리피터, 트랜시버...
*인캡슐레이션
데이터가 4 계층으로 전달되면 IP패킷을 생성하기 전에 TCP 헤더가 붙고 세그먼트를 생성한다.
->데이터를 TCP 세그먼트로 캡슐화
4 계층에서 받은 TCP 세그먼트에 IP 헤더를 붙여 패킷을 생성한다.
-> TCP 세그먼트를 패킷으로 캡슐화
전달받은 패킷에 이더넷 헤더를 붙여 프레임을 생성한다.
-> 패킷을 프레임으로 캡슐화
2023-04-06 발표
[C511] 소켓과 포트의 특징을 작성하고, 그 차이점을 설명하세요.
- 소켓의 특징
1. 양방향 통신 : 양방향 통신을 지원하므로 클라이언트와 서버 간 서로 데이터를 주고받는다.
2. 연결성 : 송신 측과 수신 측 사이를 연결하며 데이터를 신뢰성 있게 전달한다.
3. 프로토골 독립성 : 다양한 프로토콜이 사용가능하다.
4. 플랫폼 독립성 : 여러 운영체제에서 사용 가능하다.
5. 멀티플렉싱 : 하나의 소켓으로 여러 개의 연결이 가능하다.
- 포트의 특징
1. 연결방식 : TCP와 UDP 프로토콜에서 포트의 역할이 다르다.
- TCP에서의 포트 : TCP는 연결기반 프로토콜로 포트는 연결에 사용된다.
- UDP에서의 포트 : UDP는 비연결 프로토콜이므로 포트는 데이터그램을 보낼 때 사용된다.
(*데이터 그램 : 패킷 중 하나로 메시지 단위)
2. 보안 : 서버와 클라이언트 사이 통신할 때 포트를 사용하여 보안강화가 가능하다.
소켓과 포트의 차이점 :
소켓은 클라이언트와 서버 간 통신을 가능하게 해주는 연결부이며 데이터 전송에 대한 인터페이스 역할을 하고 포트는 각 프로세스를 구분하기 위해 할당받은 고유한 번호이다.
따라서 소켓과 포트는 함께 네트워크 상에서 프로세스 간 통신이 이루어지지만 연결에 사용되는 역할이 다르다.
[출처 : https://blog.naver.com/ding-dong/221389847130 , chat GPT]
[C512] HTTP 버전별 특징과 차이점을 설명하세요.
1. HTTP 0.9
- TCP 사용
- HTTP 초기 버전을 구분하기 위해 부르는 버전
- 단일 라인으로 구성. GET 메서드만 존대
- 응답이 단순
- HTTP 헤더가 없음
- HTML 파일 전송만 가능
2. HTTP 1.0
- TCP 사용
- 헤더의 개념이 도입되어 요청과 응답에 추가
- 메타데이터를 주고받을 수 있음
- 프로토골 확장 가능
- 버전 정보와 요청 메서드 함께 전송
- 상태 코드라인 응답이 추가
- 요청 성공과 실패를 파악 가능하게
- Content-Type의 도입 (HTML 이외의 문서 전송 가능)
- 커넥션 하나당 요청 하나와 응답 하나만 처리 가능
3. HTTP 1.1
- TCP 사용
- Persistent Connection 추가 (time out 동안 커넥션을 닫지 않음)
- pipelining 추가로 순차적으로 하나씩 여러 요청을 연속적으로 보내고 순차적으로 응답을 받음
- 연속적인 처리 중 앞 요청이 긴 경우 뒤 요청은 blocking
- 연속된 요청으로 헤더의 중복이 발생
4. HTTP 2.0
- 이진 프로토콜 사용
- 메시지를 프레임이라는 단위로 분할하며 추가적 바이너리로 인코딩한다. (파싱속도와 전송속도가 빠르고 오류 발생 가능성이 낮아짐)
- stream을 통하여 프레임이 전달되어 하나의 커넥션 안에 여러 개의 스트림을 가질 수 있게 되어 다중화가 가능
- 서버푸시
- SPDY에서 발전
5. HTTP 3.0
- UDP 사용으로 빠르고 안정적인 데이터 전송
- 멀티패스, 이동 중인 호스트 등 기능 추가
- QUIC에서 발전
[출처 :https://velog.io/@neity16/HTTP-HTTP-%EB%B2%84%EC%A0%84-%EB%B3%84-%ED%8A%B9%EC%A7%95, chat GPT]
오늘의 회고
오늘은 새로운 섹션이 시작이 되었다.
벌써 한 달이나 지났다니..
섹션 2부터는 그날그날 배운 것을 복습하면서 꼭 포스팅해야지~ 첫날부터 안 할뻔했다.
그래도 하고 나니 뿌듯하다
오늘 배운 부분들은 계속 리마인드 하면서 복습하니까 더 잘 이해가 되는 것 같다.
내일 한번 더 읽어봐야지😊
'코드스테이츠_Devops_4기 > section2) 클라우드 서비스 운영' 카테고리의 다른 글
Section2 AWS (0) | 2023.04.21 |
---|---|
Section2 Docker (1) | 2023.04.16 |
Section2 YAML (0) | 2023.04.12 |
Section2 네트워크 기초-3 (0) | 2023.04.12 |
Section2 네트워크 기초-2 (0) | 2023.04.07 |