Internet Communication Manager (ICM) 
Der Internet Communication Manager gewährleistet die Kommunikation zwischen dem SAP-System (SAP NetWeaver Application Server) mit der Außenwelt über die Protokolle HTTP, HTTPS und SMTP. In der Serverrolle kann er Anfragen aus dem Internet bearbeiten, die mit URLs mit der Server/Port-Kombination, auf die der ICM hört, ankommen. Abhängig von der URL ruft der ICM dann den entsprechenden lokalen Handler auf.
Sie benötigen den ICM, wenn Sie mit Ihrem SAP Application Server mit dem Internet über HTTP, HTTPS oder SMTP kommunizieren wollen, etwa bei Web-Anwendungen mit Web Dynpro ABAP.
Der ICM ist Bestandteil des SAP NetWeaver Application Server. Er ist als eigener Prozess implementiert, der vom Dispatcher gestartet und überwacht wird. Sie können mit Profilparametern einstellen, ob der ICM gestartet werden soll und wie er konfiguriert sein soll.
Weitere Informationen:
Der ICM und der SAP Web Dispatcher verwenden die gleiche Code-Basis. Der Hauptunterschied ist, dass der Web Dispatcher Loadbalancing durchführt und Requests nicht Workprozessen, sondern ICMs der angeschlossenen Server gibt. Aufgrund dieser Verwandtschaft gibt es viele gemeinsame Profilparameter und Administrationsmöglichkeiten. Die Dokumentation ist so aufgebaut, dass hervorgeht, welche Dinge ausschließlich für den ICM und welche auch für den Web Dispatcher gelten.
Der ICM-Prozess benutzt Threads, um die anfallende Last zu parallelisieren.
Die folgende Abbildung gibt eine detailliertere Übersicht des ICM.

ICM: Komponenten und Kommunikationskanäle
Neben dem Pool von Worker-Threads, die die eingehenden Anfragen bearbeiten, sind folgende Komponenten des ICM als weitere Threads implementiert:
Thread Control
Dieser Thread nimmt die eingehenden TCP/IP-Requests entgegen und erzeugt (oder weckt) einen Worker Thread aus dem Threadpool, um den Request zu bearbeiten. Des weiteren initialisiert die Thread-Steuerung die Verbindungs-Info-Daten.
Worker-Threads
Diese Threads behandeln Anfragen und Antworten einer Verbindung. Ein Worker-Thread enthält einen I/O Handler für die Netzwerkein- und -ausgabe, diverse Plugins für die verschiedenen unterstützten Protokolle (HTTP, SMTP,...), die benötigt werden, um entscheiden zu können, wann das gesendete Paket zu Ende ist (protokollabhängig). Details zur Requestbearbeitung finden Sie unter Bearbeitung von HTTP-Requests.
Watchdog
Normalerweise wartet ein Worker-Thread auf die Antwort (egal, ob er Client oder Server ist); im Fall eines Timeouts übernimmt der Watchdog die Aufgabe, auf die Antwort zu warten. Der Worker-Thread kann wieder für andere Anfragen verwendet werden. Erhält der Watchdog dann die Antwort, informiert er die Thread Control Komponente, die dann einen Worker Thread weckt.
Signal Handler
Dieser Thread bearbeitet Signale, die vom Betriebssystem oder einem anderen Prozess (z.B. Dispatcher) gesendet werden.
Verbindungs-Info
Diese Tabelle enthält für jede bestehende Netzwerkverbindung Infos über den Zustand, die Memory Pipes und die Plugin-Daten.
Memory Pipes
Diese speicherbasierten Kommunikationsobjekte dienen zum Datentransfer zwischen ICM und den Workprozessen. Hierbei gibt es für jede Verbindung 4 Pipes: für Request und Response je eine Datenpipe und eine OOB (Out Of Band)-Pipe. Letztere wird für Steuerinformationen verwendet.
Internet Server Cache
Der ICM enthält noch einen Cache, um sich wiederholende Anfragen schnell beantworten zu können. Dieser Cache ist hier im Bild nicht dargestellt, er ist in einem eigenen Abschnitt beschrieben: ICM Server-Cache.