비연결성
비신뢰성
프로그램 구분
전송 제어 프로토콜(Transmission Control Protocol)
연결지향 - TCP 3 way handshake (가상 연결)
데이터 전달 보증
순서 보장
신뢰할 수 있는 프로토콜
현재는 대부분 TCP를 사용하고 있다.
IP : 서버를 구분시켜주는 주소
PORT : 서버 안에 어플리케이션을 구분시켜주는 주소
0 ~ 65535 : 할당 가능
0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음
ip 주소의 두 가지 문제점을 해결하기 위해 만들어졌다.
도메인 네임 시스템(Domain Name System)
전화번호부
도메인 명을 IP 주소로 변환
scheme
userInfo
host
port
path
query
key = value
형태?
로 시작, &
로 추가기능fragment
→ 상태 유지 : 중간에 다른 점원으로 바뀌면 안된다.
→ 무상태 : 중간에 다른 점원으로 바뀌어도 된다.
모든 것을 무상태로 설계할 수 있는 경우도 있고 없는 경우도 있다.
무상태
상태 유지
로그인한 사용자의 경우 로그인했다는 상태를 서버에 유지
일반적으로 브라우저 쿠키와 서버 세션 등을 사용해서 상태 유지
상태 유지는 최소한만 사용
단점 : 클라이언트에서 요구되어지는 많은 데이터를 서버에 보내야 한다…..
장점
단점
Starte-line(시작라인)
start-line = request-line / status-line
request-line = method
request-target
HTTP-version
method
: 서버가 수행해야할 동작
request-target
HTTP-version
status-line = HTTP-version
status-code
reason-phrase
status-code
reson-phrase
field-name
: field-value
장점 : 단순하고 확장성이 좋다.
표현 헤더 유형
Content-Type : 표현 데이터의 형식
Content-Encoding : 표현 데이터의 압축 방식
Content-Language : 표현 데이터의 자연 언어
Content-Length : 표현 데이터의 길이
표현 헤더는 전송, 응답 둘 다 사용
Content-Type
text/html; charset=utf-8
, application/json
, image/png
Content-Encoding
gzip
, deflate
, identity
Content-Language
ko
, en
, en-US
Content-Length
TCP 7계층 공부하기
OSI 7계층은 우리 통신도 데이터 흐름을 파악하기 쉽게 계층을 나눠놨고 계층 하나 하나가 모듈화 되어 있습니다. 각 계층은 독립적이며 확장성에 용이하다.
물리계층
( 여러 대의 컴퓨터의 통신 )
컴퓨터가 서로 통신하기 위해서는 컴퓨터들끼리 수많은 선으로 연결되어야 한다.
더미 허브라고 하는 상자에 여러 개의 컴퓨터를 연결하면 데이터를 서로 교환할 수 있다.
스위치 : 메세지의 목적지를 확인하여 원하는 컴퓨터에게만 메세지 전송 가능
라우터 : 서로 다른 네트워크에 속한 컴퓨터끼리 통신이 가능하게 해주는 장비
인터넷 : 이렇게 전 세계의 컴퓨터들을 연결한 것
데이터 링크 계층
만약 나의 컴퓨터에게 여러 컴퓨터가 보낸 메시지들의 들어왔다고 한다면 각 컴퓨터들에게 들어온 메세지를 구분지을 필요가 있다.
따라서 송신자는 데이터의 앞 뒤에 특정한 비트열을 붙입니다.
같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고 받기 위해서 필요한 모듈
Framing은 Date-link Layer에 속하는 작업들 중 하나.
랜카드에서 구현
네트워크 계층
수많은 네트워크들의 연결로 이루어지는 inter-network 속에서
어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해
IP 주소를 이용해서 길을 찾고 (routing)
자신 다음의 라우터에게 데이터를 넘겨주는 것(fowording) - fowarding table로..
Transport Layer
Port 번호를 사용하여 (하나)
도착지 컴퓨터의 최종 도착지인 프로세스에까지
데이터가 도달하게 하는 모듈
사실 현대의 인터넷은 OSI 모델이 아니라 TCP/IP 모델을 따르고 있습니다.
http 프로토콜 포함해서…