Http 통신을 따로 빼놓은 이유는, 노션에 설명하기엔 다소 해비한 감이 있어서 따로 빼놓았다.
이해할 당시에도 내 선에선 복잡하고 다소 어려운 부분이 있어서 이해하기에 약간의 시간이 걸렸던 기억이 있기에,,,ㅎ
그 전에, 7계층까지 모든 장비의 역할을 말해보겠다
(TOP-DOWN 기억)
7,6,5 계층 일: 메시지
4,3,2 계층 일: 옷 갈아입히기
1 계층 일: 시그널링
4계층 일: PORT SWITCHING
3,2 계층 일: 옷 갈아입히기
1계층 일: 증폭
3계층 일: 라우팅(스위칭)
2계층 일: 옷 갈아입히기
1계층 일: 증폭
2계층 일: 스위칭&플러딩
1계층 일: 증폭
분업화: 전문화

HTML 문서 교환을 위한 request(요청)<-> reply(응답) 인 application 계층 프로토콜

Request 메시지: HTTP GET/POST/DELETE
Response 메시지: 2xx/3xx/4xx/5xx Message
★Request
GET: download
POST: upload
DELETE: 삭제
☆Response
200 OK
3XX (Client가 원하는)문서가 다른 곳으로 이동
4xx client error
5xx server error

옷: 주소, 타입과 순서 번호 등의 정보들
Capsulation: 옷 입히기
4계층까지 입음: Segment
3계층까지 입음: Packet
2계층까지 입음:Frame
수신 장치는 반대로 bottom-up 프로세스가 일어남
그런데, 각 계층 헤더에는 그 상위 프로토콜을 구분하는 숫자가 들어가기에 쉽게 말하면
타입, 프로토콜, 목적지 포트는 안에 뭐가 들어있는지 표시한다(위에 뭐가 들어있는지 표시한다) 라고 할 수 있다
그렇다면 동일한 두 장치 사이에 동일한 두 HTTP 커넥션 연결했을 때 이 커넥션들을 구분하는 방법은?
따로 없다 그저 출발지 포트를 확인해보면 알 것.그래서 SRC PORT가 없다면 두 커넥션을 구분할 수 없음,,
데이터 덩어리 자름 => 헤더에 순서 번호 포함
데이터 덩어리 자르지 않음
자르는 것은 출발지에서, 조립은 목적지에서!
Unicast: 1대
Multicast: 특정 그룹
Broadcast: 모든 장치들
플래그를 통해 커넥션 오픈,유지 종결을 판단함
사실 다른 포스팅에서도 했지만 한번에 보고 싶으므로 다시 정리를 하도록 하겠다 분명 효율성면에서 어긋나지만 전체 정리를 해보고 싶었기에..

그림은 예시고,
WIN 크기: 그 크기만큼 보내라는 것
1. 3 way handshake를 통해 커넥션 오픈 (syn->syn/ack-> ack)

자 이 그림으로 설명을 해보자 (여기서 IP 브로드캐스트 주소는 255.255.255.255고 MAC 브로드캐스트 주소는 FFFF.FFFF.FFFF.FFFF라고 해보자 ->ARP필요X)
일단 PC A에서 작동을 시작해야 한다
1-1. 통신을 하기 위해 DHCP서버를 먼저 찾아야 함 (IP주소나 DNS 서버 주소 등을 알아내야 하기 때문)-> 네트워크에 자신의 존재를 알리기 위해 브로드캐스트로 DISCOVER 메시지 보냄~~ DISCOVER
: 쉽게 말하면, 전학생이 학교에 처음 왔는데 이 학생은 선생님(DHCP 서버)을 찾기 위해 교실 전체(네트워크)에 "선생님 어디 계세요?"라고 크게 묻는 것과 같기 때문에 모든 학생(네트워크 장치)들도 이 소리를 들을 수 있음
1-2. DHCP 서버:"ㅇㅋ~받았어 나는 너에게 OFFER 메시지를 줄게" -> 클라이언트에게 사용가능한 IP 주소 및 서브넷 마스크 등을 제안함 OFFER
: 선생님이 그 학생의 호출을 듣고 "여기 있어 너에게 자리를 줄게 이건 너의 자리 위치(IP주소)야" 라고 대답함
1-3. 클라이언트가 제안된 IP 주소를 사용하기로 하고 REQUEST 메시지를 통해 이를 요청하는데 클라이언트는 해당 IP 주소가 이미 다른 장치에서 사용 중인지 확인해야 함 -> ARP요청 보냄 REQUEST
: 전학생이 선생님이 안내한 자리를 받고 "네 이 자리를 이용할게요 근데 혹시 이 자리에 앉아있는 다른 학생이 있나요?" 라고 교실 전체에 묻고 확인함
1-4. DHCP 서버가 클라이언트 요청 승인하고 최종적으로 IP 주소 할당하는 메시지 보냄 ACKNOWLEDGE
: 선생님께서 "응 그 자리에 앉아도 돼 이제 그 자린 네 겁니다" -> 전학생에게 그 자리가 할당되어 사용할 수 있게 됨
자 이제 PC A는 통신을 할 수 있다
PC A가 네이버 웹 서버에 접속한다고 가정해보자
네이버 웹 서버의 도메인 네임은 www.naver.com 만으로는 그에 해당하는 ip주소를 바로 알 수 없다 -> 이렇기에 DNS 서버가 필요한 것!

2-1.DNS 쿼리 시작
-> DNS 쿼리 패킷은 라우터에 도착하면 다음 네트워크에서도 ARP 교환을 통해 2계층 옷으로 갈아입히기! -> 어찌 저찌 ARP 요청과 응답으로 MAC주소를 알아냄(왜냐고? IP 가 3계층이라 그 이하인 2계층 주소도 알아야함(IP 주소는 3계층에서 사용되지만, 실제 데이터는 2계층의 MAC 주소를 통해 전송되기 때문)
IP 주소는 네트워크를 통해 패킷을 전송하는 데 사용되는 논리적 주소고 MAC 주소는 LAN에서 데이터 프레임 전달하는 데 사용되기 때문,,
이것도 비유로 해볼까요?? 1. 고객: "저녁에 음식을 먹으러 갈 음식점 예약을 하자."클라이언트는 이제 해당하는 도메인 네임의 IP 주소를 알아냈습니다!
캐시 확인: 이미 '파스타 하우스'에 대한 예약 내역이 있으면, 그 예약을 바로 사용
캐시 미스: 예약 내역이 없으면, 음식점에 직접 전화하여 예약을 확인해야 함(로컬 DNS 서버에 쿼리 전송)
3. 전화번호 확인 (MAC 주소): 음식점에 전화를 걸기 위해,,
전화 연결: 전화번호를 통해 전화선(로컬 네트워크)의 물리적 연결을 설정.
전화 교환기 (ARP 프로세스): 전화선의 물리적 경로를 확인하여 연결을 설정
음식점의 예약 확인 (로컬 DNS 서버의 처리)
예약 확인-> 예약 정보 확인 -> 예약 확인 (재귀적 쿼리 수행)
4. 지역 음식점 관리자: '파스타 하우스'가 어떤 지역 음식점 체인인지 확인
체인 본사: 지역 체인 본사의 정보와 예약 시스템을 확인
최종 확인: 본사에서 예약 정보를 확인하고 응답 보내줌
예약 응답 (응답 반환)
5. 예약 정보 제공: 음식점이 예약을 확인하고, 사용자에게 예약 정보를 전달
정보 저장: 음식점이 예약 정보를 자신의 시스템에 저장하여 다음에 참조할 수 있도록 함
식사 준비 (클라이언트의 DNS 응답 처리)


~~이에 대한 설명은 많이 했으므로 간단하게만 기재하겠다~~
TCP는 DNS 서버에 의해 알아낸 IP 주소를 가진 목적지 장치와 TCP 3 WAY HANDSHAKE 수행
-> 불필요한 데이터 전송 막을 수 O(통신의 성공 여부 미리 확인)
1. HTTP Get: 다운로드할 파일
2. 200 OK: 성공(데이터)