1. What is the Internet
internet
- TCP/IP 사용여부 상관없이 상호 연결된 네트워크 집합
the Internet
- 물리적 실체 존재
- Standard Internet protocol suite(TCP/IP)를 사용하는 전 세계적으로 연결된 컴퓨터 네트워크
Internet: Service view
infrastructure that provides services to applications
- 애플리케이션에 서비스를 제공하는 인프라
- 인터넷은 신기술이 도입되어도 구 기술을 배제하지 않고 연동시키면서 작동
- 공유하는 자원과 장비 등이 존재하며, 신기술은 별개의 기술이라고 생각하면 안됨
- Web, VoIP(음성통화), email, games, e-commerce, social nets, …
provides programming interface to apps
- 애플리케이션에 프로그래밍 인터페이스 제공
- 프로그램을 보내고 받는 것이 인터넷에 "연결"되도록 하는 훅 제공 -> "Socket"
- 우편과 비슷한 서비스 옵션 제공
Internet Structure
General Network Reference Model
- Network edge
- Host(clients and servers)
- 겉에 있는 휴대폰, 어플, 노트북 등등
- Home/Enterprise Network
- home: 공유기는 라우터와 연결되어있고, 이 라우터를 통해 core 네트워크에 연결
- enterprise: 동시 사용자가 많아서 home보다 고성능 라우터 사용 (but 요새는 home도 이정도 함)
- Access network
- 네트워크에 코어에 접근할 수 있도록 도와주는 네트워크
- 유/무선의 연결 방법
- first router 또는 edge router이라고도 한다.
- Core network
- 엣지의 장치들이 보내는 신호를 보내주는 Router 존재

Network of Networks
- Core 네트워크의 라우터들은 각 지역/나라/학교 마다의 ISP(Internet service providers)로 연결되어있다. (복잡한 구조)
- 각 국가, 지역마다 여러개의 ISP가 존재하며, ISP끼리 물리적으로 연결되기도하고, IXP(Internet exchange point)로 연결되기도 한다.
- 소규모 지역들간의 연결도 존재 (regional net)
- 구글, 넷플 등의 자페 서버(네트워크)도 제공 (Content provider network)

Interconnection of ISPs
- ISP는 인터넷에 접근하고 사용할 수 있도록하는 서비스를 제공해주는 조직
- ISP간에는 다양한 형태의 상호 연결이 존재 -> 다단계로 연결되어 전 세계적으로 인터넷 연결 및 정보,데이터 교환하게 함
- Tier1 ISP: 국가기관망 또는 대형통신사(KT, SKT)

2. Definition of Protocol
Protocol
- 둘 이상의 객체가 상호 간에 합의한 무언가
- 네트워크의 입장에서: 서로 통신을 하기 위해서 합의한 사항들(What, How, When?)
-> 각 장치들로 건너가며 신호가 전달될 때, 전달되는 방법
-> 통신에 대한 규칙 집합
3 key elements of protocol
- Syntax: data format
- data format - 데이터 형식이 무엇인지
- coding - 데이터를 변환, 저장, 전송하는 방법은 무엇인지
- signal level - 전송 시 어떤 신호 레벨이 사용되어야 하는지
- Semantics: actions
- control information - 송수신할 때 어떻게 행동해야 하는지
- error handling - 오류는 어떻게 처리하는지
- Timing: order
- sequencing - 송수신되는 메세지들의 순서
- speed matching - 송수신 속도 조절

3. TCP/IP Protocol Stack
Example of layering
- 한국인 철학자와 중국인 철학자 입장
→ 통역 필요 (통역 메커니즘은 관심 없음, 통역 서비스만 필요)
- 통역가 입장
→ 공통언어를 영어로 설정해서 통역하는 메커니즘 (철학가인지는 관심 없음, 영어 통역사 서비스만 필요)
- 영어 통역사 입장
→ 상대방과 전화로 소통만 되면 됨 (전화 방식이 어떻게 구성되어있는지는 관심 없음, 전화 서비스만 필요)
- 통신사업자 입장
→ 전화 신호를 네트워크로 전달하면 됨 (전화 신호가 영어인지, 말인지 관심 없음)
- 만약 통신비가 비싼 상태에서, 한국인이 말을 길게한다면?
-> 돈이 많이 나옴, 한국인 철학자가 통신비가 비싼 것을 안다면, 압축해서 말할 수 있었을 것이다.
-> 이것이 최적화!
- 철학자들끼리의 약속, 통역사들끼리의 약속
-> 동등한 레이어끼리의 프로토콜
- 상위 레이어는 하위 레이어만 알 수 있으며 하위 레이어의 서비스를 이용한다.

Layed Refernce Model
- 같은 레이어 사이에는 그 레이어에서만 통용되는 P2P 프로토콜 존재
- 다른 레이어 간에는 통신하는 프로토콜이 존재하지 않음
- 상하위 레이어간의 통신을 가능하게 하는 인터페이스
- 레이어를 한 번에 두 단계 건너뛰지 못한다. 무조건 한번에 한 단계씩
Why protocol layering?
- 네트워크들은 복잡하기 때문에 이들을 잘 관리하기 위해 필요
- 복잡한 문제를 푸는 방법은: 해결할 수 있는 수준으로 자르고(explcit structure) 다시 뭉치기
- 각 레이어에서 기능을 modularization하므로 자신의 기능에만 집중할 수 있게됨
Benefits
- assists in protocol design
- 프로토콜 설계에 도움
- 각 레이어에서 기능을 modularization하므로 개발 및 유지관리에 용이
- fosters competition
- 서로 다른 제조업체나 개발자들이 각 레이어의 구현을 따르므로 경쟁을 촉진시켜 품질 향상
- changes in one layer do not affect other layers
- 한 레이어의 변화는 다른 레이어에 영향X
- 각 레이어는 독립적이며 유연성과 확장성을 제공
- provides a common language
- 각 레이어는 특정 역할을 나타낸다고 사전에 약속된 형태이므로 "공통 언어"를 제공하며, 네트워크 설계 및 문제 해결에 대한 효율적인 의사 소통 촉진
Requirments for communication with layered model
- Same number of layers at two entities
- Same protocol on each peer layer
- Same interface between upper & lower layers
TCP/IP-Internet protocol stack
OSI Model vs TCP/IP model
- 2종류의 layer model
- OSI Reference model은 7layer로 고전적임
- TCP/IP protocol suite는 5layer로 요새 많이 사용하는 모델

Packet
- 통신을 할 떄 데이터는 패킷이라는 단위로 나눠져서 전송됨
- 쪼개지 않으면 대역폭을 모두 점유해서 그동안 다른 기기가 회선을 사용할 수 없으므로 분할함
Five layer
- Application
- supporting network applications
- 통신하기 위해 필요한 기능을 end user에게 제공
- FTP(파일교환), SMTP(이메일교환), HTTP(웹서비스), e-mail, P2P, ...
- Transport
- process-process data transfer
- 클라이언트와 서버 간의 애플리케이션 계층 메세지를 전송
- 데이터 정렬, 오류 정정 등 수행 뒤 통신 확보
- TCP (Transmission Control Protocol), UDP (User Datagram Protocol)
- Network
- routing of datagrams from source to destination
- 다른 네트워크와 통신하기 위한 경로 설정 및 논리 주소 결정
- 데이터를 packet 단위로 쪼개고 송수신 주소 명시하고 routing(최선 경로 설정)
- 인터넷에는 하나의 IP(Internet protocol)와 다수의 Routing Protocol 존재
- Link
- data transfer between neighboring network elements
- 네트워크 기기 간 데이터 전송 및 물리 주소 결정
- 수신 측과 송신 측의 데이터처리 속도 차이 해결
- 여러 장치들이 동일한 링크를 공유할 떄 충돌이 발생하지 않도록 조정
- Ethernet, 802.11 (WiFi), ...
- Physical
- bits “on the wire”
- 물리적인 연결과 전기 신호 변환/제어
- 데이터 송신: 상위 계층에서 하위 계층으로 (1->5)
- 데이터 수신: 하위 계층에서 상위 계층으로 (5->1)
- Application Layer에서 전송된 data의 프로토콜에 따라 Transport Layer에서 TCP/UDP 결정
- 각 레이어는 아래에 있는 레이어가 어떤 기능을 하는지 알고 기능을 함(의존성)
- 상위 레이어로부터 메시지를 수신하며 메시지의 내용은 수정하지 않음
Encapsulation/Decapsulation
- 각 레이어는 받은 메세지에 헤더라는 추가정보를 첨부
- 각 레이어는 해당 Header만 읽히고 다른 Data는 읽지 못함
- 헤더에는 해당 계층에서 필요한 정보와 상위 계층 프로토콜을 나타내는 필드를 포함
Field
- Port Number field (Transport Layer)
- 첫 번째 헤더(TCP/UDP 헤더)의 주요 정보는 Port number로 어느 운영체제든 같으며 바꿀 수 없다
- TCP/UDP는 포트 번호를 사용해 상위 계층 식별
- 송신: 메시지를 해당 포트번호로 연결
- 수신: 세그먼트를 TCP/UDP header와 data로 분리 -> TCP/UDP header에서 port number를 추출 -> data를 상위 계층으로 전달
- Protocol field (Network Layer)
- 두 번째 헤더(IP datagram 헤더)의 주요 정보는 IP주소
- 송신: 데이터그램을를 해당 IP주소와 연결
- 수신: 패킷을 IP header와 IP data로 분리 -> IP header에서 protocol field를 추출(TCP or UDP) -> IP data를 상위 계층으로 전달
- type field (Link Layer)
- 세 번째 헤더(Frame 헤더)의 주요 정보는 MAC주소
- 송신: 패킷을 Frame헤더(MAC주소)와 연결
- 수신: 프레임을 frame header와 frame data로 분리 -> frame header에서 type field를 추출 -> frame data를 상위 계층으로 전달

Encapsulation
- 데이터 송신; Application에서 처음 요청 데이터가 생성되고 하위 계층으로 전달되면서 헤더가 첨부됨

Decapsulation
- 데이터 수신; 수신받은 데이터가 상위 계층으로 전달하면서 양파껍질 벗기든 헤더를 차례대로 제거함

- 데이터 전송 단위는 각 data(message), segment, packet(datagram), frame, bits이며 Network Layer에서는 packet/s로 전송되는 것이다.

데이터를 보낼 때
- Application: Data(Message) 생성
- Transport: 데이터를 받아서 필요한 정보(transport header)를 붙임 -> Segment 생성
- Network: 데이터를 받아서 필요한 정보(network header)를 붙임 -> Datagram 생성
- Link: 데이터를 받아서 필요한 정보(link header)를 붙임 -> Frame 생성
- Physical: 물리적인 신호로 변환하여 상대방에게 전달
데이터를 받을 때
- 자기 계층에 해당하는 header를 처리하고, 상위 레이어로 넘기고 ...
- Application에서 소스가 보낸 메세지를 확인하게 됨
4. Internet History
- 1961~1972: Early packet-switching principles (패킷 교환 개발)
- 1972~1980: Internetworking, new and proprietary nets (독점네트워크와 인터네트워킹)
- 1980~1990: new protocols, a proliferation of networks (네트워크 확산)
- 1990, 2000's: commercialization, the Web, new apps (인터넷 급증)
- 2004~: increasing ubiquity to IoE
- 인터넷은 네트워크가 아니라 삶이다. ?
- any time, any device, any accasion, any where(location), and seamless(한결같다)
IP Layer
why ALL-IP layer?
- IP는 network layer에서 유일한 프로토콜이기 때문
- 다른 layer에는 많은 프로토콜이 존재함
- network layer에서 데이터그램을 라우팅하고 전달하는데 IP 프로토콜이 사용됨
Role
- Integration tool between heterogeneous networks
- 여러 다른 종류로 이루어진 네트워크 간 통합 도구를 제공
- IP 데이터그램은 애플리케이션 및 네트워크 유형에 관계없이 end hosts간의 데이터 교환에 널리 사용됨

- Solutions for the integration of networks and applications
- 네트워크와 애플리케이션의 통합을 위한 솔루션 제공
- 다양한 네트워크지만 IP는 공통으로 가짐

- Unified viewpoint of the Internet to users
- 사용자에게 인터넷에 대한 통합된 관점 제공
- 실제 네트워크에서는 Host가 다양한 네트워크와 장치에 연결되어있지만(Subnet: 부분망; 개별네트워크)
- 유저의 관점에서는 Host들이 하나의 큰 네트워크인 "인터넷"을 통해 연결되어있는 것처럼 보인다.

IP계층은 다양한 네트워크와 애플리케이션 간의 통합을 지원하며, 사용자에게 인터넷을 단일화된 형태로 제공하여 네트워크 통신을 단순화하고 확장성을 제공